【发布时间】:2017-11-06 11:37:24
【问题描述】:
我真的不知道为什么这个列表理解生成的输出与我认为的嵌套 for 循环的等效输出不同。任何人都可以提供任何见解吗?
列表理解:
[(n ** 5, m ** 3) for n in range(3) for m in range(5) if m % 2 == 0]
结果如下:
[(0, 0), (0, 8), (0, 64), (1, 0), (1, 8), (1, 64), (32, 0), (32, 8), (32, 64)]
但是,我认为是等效的嵌套 For 循环:
L = []
for n in range(3):
for m in range(5):
if m % 2 == 0:
n = n**5
m = m**3
vals = (n,m)
L.append(vals)
L
结果如下:
[(0, 0),
(0, 8),
(0, 64),
(1, 0),
(1, 8),
(1, 64),
(32, 0),
(33554432, 8),
(42535295865117307932921825928971026432, 64)]
为什么两者的输出会有差异?
【问题讨论】:
标签: python