这是我目前的单行:
leader = [server.get_member(x) for x in self.rosters[server.id][clan]['members'] if discord.utils.get(server.get_member(x).roles, id="463226598351699968")]
我只想在 server.get_member(x) 不是 False 时运行它。我如何将这个额外的逻辑添加到这个列表理解中?我了解如何执行基本的 for in 语句,但是将它嵌套得比这更深让我有点困惑。
请您参考如下方法:
一般来说,不要为了写一行而牺牲可读性。如果使用列表推导式执行此操作不是很明显,则使用 for 循环。
leader = []
for x in self.rosters[server.id][clan]['members']:
member = server.get_member(x)
if member and discord.utils.get(member.roles, id="463226598351699968"):
leader.append(member)
不过,在这种特定情况下,由于您不需要 x,您可以在迭代时使用 map 来应用 server.get_member。
leader = [m for m in map(server.get_member, self.rosters[server.id][clan]['members'])
if m and discord.utils.get(m.roles, id="463226598351699968")]
