我看过很多次下面的代码,我知道这是解决我问题的方法,但我真的很难理解它是如何工作的。特别是该准则:
item for item in list_a if item not in list_b.
例如,使用for each in list
,我可以理解它正在遍历列表,并为该列表中的每个项执行循环。使用while x < 10
很容易理解,而且大多数其他循环和类似命令都非常简单。即使是for item in list_a if item not in list_b
对我来说也是有意义的,虽然没有第一个item
就无法单独工作……但出于某种原因,我只是不明白第一个item
是如何符合方程的,而不是“因为”(这只是一个没有帮助的答案),它代表什么。
有人能帮我解决这个问题吗,或者能把这个方程展开成几个方程,也许能帮我理解它的工作原理。当我了解这些工具的工作原理时,使用它们对我来说容易得多,而这些工具让我困惑了一段时间。
提前谢谢。
如果你把它分成三部分可能会更清楚:
item
for item in list
item not in list_b
。列表理解语法之所以如此,首先是因为它反映了扩展版本:
也因为你不一定只想要
item
,例如:将创建一个
new
列表,其中包含old
中所有偶数的平方。首先,您所指的代码行称为列表理解。基本上,正如你所知道的,这是一种创建一个“正在进行”的项目列表的方法,同时还可以创建条件语句。
当您创建一个列表理解时,您正在构建一个列表,您需要告诉Python您正在将什么放入该列表中。如果列表理解只是:
这根本不是一个列表理解,因为您只是在迭代,而不是在新列表中存储任何东西。因此,为了实际将项目保存到新列表中,您需要:
同:
把“第一个
item
”看作是要放入列表中的值。本质上,列表理解枚举,跟踪索引并对每个迭代执行如下操作:列表理解
[item for item in list_a if item not in list_b]
相当于使用filter
函数:相关问题 更多 >
编程相关推荐