Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表理解在for循环中的行为_Python_List Comprehension - Fatal编程技术网

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

Python 列表理解在for循环中的行为,python,list-comprehension,Python,List Comprehension,为什么以下两种情况表现不同 第一: x = [] [x.append('f8') for num in range(8)] print(x) 结果: ['f8', 'f8', 'f8', 'f8', 'f8', 'f8', 'f8', 'f8'] [None, None, None, None, None, None, None, None] 第二: x = [] print(list(x.append('f8') for num in range(8))) 结果: ['f8', 'f

为什么以下两种情况表现不同

第一:

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

['f8', 'f8', 'f8', 'f8', 'f8', 'f8', 'f8', 'f8']
[None, None, None, None, None, None, None, None]
第二:

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

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

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

列表的返回值。追加操作为无。因此,名单

[x.append('f8') for num in range(8)]
实际上等于

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

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

在第一种情况下,您正在打印列表x,其中添加了8次“f8”


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

append方法的返回值为None。它不返回任何东西,只是在适当的位置修改列表。顺便说一下:列表理解并不是执行此任务的正确工具。为此,应该使用范围为8:x的常规for循环:for num。列表理解用于用这些值填充新列表。追加是您正在对列表执行的任务或操作。它不会返回任何东西。在这种特殊情况下,列表理解是制作由这些项目组成的列表的正确工具,如果你使用一个,你不应该将它与append:x=['f8'for uuuu in range8]@mkrieger1混合使用是的,你是对的,我并没有想到,我在网上学习了一些东西,并使用了zip函数,我尝试直接把它放进去,但结合其他的值却没有得到任何结果。所以我缩短了问题的时间,开始编写代码。非常感谢你消除了困惑。