python 3 - x for x for循环 - 它们如何工作?

Kuz*_*zen 3 python python-3.x

有人可以详细解释下面的for循环类型吗?

primes = [x for x in range(2, 50) if x not in noprimes]
Run Code Online (Sandbox Code Playgroud)

要么

le_list = [i for i in getfiles(path) if i != 'fred']
Run Code Online (Sandbox Code Playgroud)

我没有得到的是i for i,或者x代表x.我不明白它究竟在说什么.

variable for variable in a list if variable whatever.
Run Code Online (Sandbox Code Playgroud)

我不明白为什么你在开始时需要两次变量.for循环遍历列表中的每个项目,它是如何区别对待的?

tri*_*lax 5

x在写作时显然多余的额外提及变量的原因x for x是第一个x不需要x.它恰好出现在你给出的例子中.以下是一些例子,它们应该澄清x你问题中第一个和第二个之间的区别:

ones = [1 for x in range(10)]
Run Code Online (Sandbox Code Playgroud)

这简单地给出了10个列表,与之相同[1] * 10.

squares = [x*x for x in range(10)]
Run Code Online (Sandbox Code Playgroud)

这给出了指定范围内x每个的平方x.

在你的例子中,第二个x是for循环使用的变量,第一个x只是一个表达式,在你的情况下恰好发生x.表达式可以是您喜欢的任何内容,也不需要表达x.


results = [expression for x in range(10)]
Run Code Online (Sandbox Code Playgroud)

expression可以包括你喜欢的任何东西 - 字符串,计算,功能 - 无论你选择什么.如果表达式碰巧恰到好处,x那么如果您不习惯它,它看起来很不寻常,但它与以下内容相同:

results = []
for x in range(10):
    results.append(expression)
Run Code Online (Sandbox Code Playgroud)