python - 理解 "item for item in list_a if ..."Python

标签 python

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

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 是怎么回事除了“因为”(这不是一个有帮助的答案)之外,它代表什么符合等式。

有人能帮我解决这个问题,或者能把这个方程式扩展成几个方程式,从而帮助我弄清楚它是如何工作的。当我了解这些工具的工作原理后,使用这些工具就容易多了,而这些工具让我困惑了一段时间。

提前致谢。

最佳答案

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

  1. 元素;
  2. 来自列表中的项目;
  3. item 不在 list_b 中

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

for item in list: # 2.
    if item not in list_b: # 3.
        new_list.append(item) # 1.

还因为您不一定只想要 item,例如:

new = [x ** 2 for x in old if not x % 2]

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

关于python - 理解 "item for item in list_a if ..."Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22620091/

相关文章:

python - 覆盖 Python 析构函数 (__del__) 会导致内存泄漏吗?

python - 创建一个 NxM 矩阵 A 到 NxMxL 矩阵 B,其中 B[i,j, :] = kronecker_delta(A[i, j])?

python - 将 float 四舍五入到最接近的整数?

python - 列表索引越界,原因不是很明显 numpy

python(x,y) 上的 Python 3.x?

Python子进程无法获取oracle命令的输出 "imp"

python - Django 日期时间查询

python - 使用 AJAX 处理 Django 表单验证错误

python - 为什么 `tkinter.ttk.Notebook`标签越来越薄?

python - 为什么不同的Python模块安装在不同的位置?