gpt4 book ai didi

python - 列表中的差异 - Python - 语法解释

转载 作者:行者123 更新时间:2023-11-30 22:53:26 26 4
gpt4 key购买 nike

有人可以解释一下以下代码行背后的语法含义吗:

temp3 = [x for x in temp1 if x not in s]

我知道这是为了找出两个列表之间的差异,但是这里的“x”代表什么?正在比较的列表中的每个单独元素?我明白temp1s是列表。另外,x for x必须有相同的变量或者可以是 x for y

最佳答案

[x for x in temp1 if x not in s]

稍微重新排序可能会有所帮助,这样您就可以从左到右阅读整个内容。让我们将第一个 x 移到末尾。

[for x in temp1 if x not in s yield x]

我添加了一个假的 yield 关键字,以便它自然地读为英语。如果我们添加一些冒号,它就会变得更加清晰。

[for x in temp1: if x not in s: yield x]

确实,这就是事物评估的顺序。x 变量来自 for 循环,这就是为什么您可以在 中引用它ifyield 子句。但列表推导式的编写方式是将产生的值放在前面。因此您最终会使用尚 undefined variable 名称。

事实上,最终的重写正是您编写显式生成器函数的方式。

def func(temp1, s):
for x in temp1:
if x not in s:
yield x

如果你调用func(temp1, s),你会得到一个与列表等效的生成器。您可以使用 list(func(temp1, s)) 将其转换为该列表。

关于python - 列表中的差异 - Python - 语法解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38194544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com