列表理解在for循环中的行为

时间:2019-06-06 20:20:05

标签: python list-comprehension

为什么以下两种情况的行为不同?

第一:

x = []
[x.append('f8') for num in range(8)]
print(x)

结果:

['f8', 'f8', 'f8', 'f8', 'f8', 'f8', 'f8', 'f8']

第二:

x = []
print(list(x.append('f8') for num in range(8))) 

结果:

[None, None, None, None, None, None, None, None]

为什么在第二种情况下通过None?列表理解在这里的表现如何?

2 个答案:

答案 0 :(得分:0)

列表.append()操作的返回值为None。因此,列表

[x.append('f8') for num in range(8)]

实际上等于

[None, None, None, None, None, None, None, None]

,但是在创建None列表的过程中,附加了x的副作用。因此,这两个结果完全没有冲突。

答案 1 :(得分:0)

在第一种情况下,您将打印列表x,该列表附加了'f8' 8次。

在第二种情况下,您正在打印一个包含x返回值8次的列表(不是x.append(...))。由于append()返回None,所以这是您得到的输出。