Python 这两种列表理解计算之间有什么不同?
我一直在运行我自己的统计分析,但我很好奇为什么以下两个列表理解有不同的输出。我正在Ubuntu LTS 16.04上使用Jupyter笔记本: 输入:Python 这两种列表理解计算之间有什么不同?,python,python-3.x,Python,Python 3.x,我一直在运行我自己的统计分析,但我很好奇为什么以下两个列表理解有不同的输出。我正在Ubuntu LTS 16.04上使用Jupyter笔记本: 输入: example = [[15, 16, 17], [18, 19, 20]] list1 = [item[0] + item[1] + item[2] for item in example] for item in example: list2 = [item[0] + item[1] + item[2]]
example = [[15, 16, 17],
[18, 19, 20]]
list1 = [item[0] + item[1] + item[2] for item in example]
for item in example:
list2 = [item[0] + item[1] + item[2]]
list1, list2
输出:[48,57],[57]
显然,第二个函数正在打印第二行的总和,但为什么不打印第一行呢?第二个示例不是列表理解,最后的列表只有一个项,因为每次循环执行时都会覆盖list2变量。要获得相同的输出,第二个循环应更正为:
list2 = []
for item in example:
list2.append(item[0] + item[1] + item[2])
否则,您将覆盖在循环的上一次迭代中分配给列表2的内容,只得到上一次迭代的结果。第二个示例不是列表理解。你只是重复给同一个名字赋值。明白了,我想它不知怎么被覆盖了,只是不知道为什么。谢谢谢谢你的解释!在我的原始代码中确实有。