为什么以下两种情况的行为不同?
第一:
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
?列表理解在这里的表现如何?
答案 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
,所以这是您得到的输出。