遍历 python 列表理解

Walking through python list comprehension

我正在尝试使用此示例理解 python 中的列表理解 -

async def on_member_update(before, after):
    stream = [i for i in after.activities if str(i.type) == "ActivityType.streaming"]
    if stream:

以上示例使用了 discord.py 中的 api。流媒体是会员 activity - https://discordpy.readthedocs.io/en/stable/api.html#activity . ActivityType.streaming is a type - https://discordpy.readthedocs.io/en/stable/api.html#discord.ActivityType

这个循环发生了什么?我将尝试演练我可能知道的内容。那么如果 (i.type) returns 作为一个字符串那么它会循环遍历流列表中的字符吗?我很困惑。 after.activites 是成员的当前 activity。所以它会流式传输。 (i.type) 究竟代表什么,循环是如何与 after.activites 交互的?

迷路了。有人可以引导我完成这里发生的事情的步骤吗?谢谢!

列表推导式可以机械地转换为循环。这个理解相当于代码

stream = []
for i in after.activities:
    if str(i.type) == "ActivityType.streaming":
        stream.append(i)

无关,通过先将其转换为字符串然后比较结果字符串来比较某种类型的东西有点不典型。什么都不知道,我希望看到的是行

    if i.type == ActivityType.streaming

或者如果可以有有意义的子类型,也许 isinstance() 而不是直接类型比较。