首页 > 解决方案 > 撤消python列表理解

问题描述

这段python代码是列表理解的一个例子

lst = [ x**2 for x in [x**2 for x in range(11)]]

# [0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000]

如果它不在列表理解中,该怎么写?

我的理解是生成的列表是范围(11)中每个数字的平方的平方。所以我明白这是如何获得第一部分:

lst = []
for item in range(11):
    lst.append(item**2)
print(lst)

# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是我怎样才能得到第二部分呢?

标签: pythonlistlist-comprehension

解决方案


lst = [ x**2 for x in [x**2 for x in range(11)]]

# equivalent to:
squares = []
squares2 = []
for x in range(11):
    squares.append(x**2)

for item in squares:
    squares2.append(item**2)
    
print(squares2)
print(squares2==lst)

输出:

[0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000]
True

推荐阅读