Skip to main content
 首页 » 编程设计

python之使复杂的列表理解成为条件

2025年05月04日14JustinYoung

这是我目前的单行:

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")]