理解“list_a 中的项目如果...”PYTHON

Kra*_*tch 7 python

我已经多次看到以下代码,并且我知道它是我的问题的解决方案,但我真的很难理解它是如何工作的。代码特别是:

item for item in list_a if item not in list_b.
Run Code Online (Sandbox Code Playgroud)

例如,使用for each in list,我可以理解它正在遍历列表,并为该列表中的每个项目执行循环。withwhile x < 10很容易理解,大多数其他循环和类似命令都非常简单。即使for item in list_a if item not in list_b对我来说也是有意义的,尽管如果没有第一个,单凭这一点似乎就行不通item……但出于某种原因,我只是不明白第一个如何item适合方程,除了“因为”(这只是这不是一个有用的答案),它代表什么。

有人能够帮助我解决这个问题,或者能够将这个方程扩展到几个方程,这可能会帮助我理解它是如何工作的。当我了解这些工具的工作原理时,使用这些工具对我来说就容易多了,而这些工具让我困惑了一段时间。

提前致谢。

jon*_*rpe 8

如果把它分成三部分,可能会更清楚:

  1. item;
  2. for item in list;
  3. 在哪里item not in list_b

列表理解语法之所以像这样,首先是因为它反映了扩展版本:

for item in list: # 2.
    if item not in list_b: # 3.
        new_list.append(item) # 1.
Run Code Online (Sandbox Code Playgroud)

也因为你不一定想要item,例如:

new = [x ** 2 for x in old if not x % 2]
Run Code Online (Sandbox Code Playgroud)

将创建一个new列表,其中包含 中所有偶数的平方old