撤消 python 列表理解
Undo python list comprehension
这段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]
如果不在list comprehension中怎么写?
我的理解是生成的列表是range(11)中每个数字的平方的平方。所以我明白这是如何获得第一部分的:
lst = []
for item in range(11):
lst.append(item**2)
print(lst)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
但是我怎样才能得到第二部分呢?
循环两次
lst = []
for item in range(11):
lst.append(item**2)
i = 0
for item in lst:
lst[i] = (item**2)
i = i + 1
print(lst)
理解等同于
lst = []
for item in range(11):
lst.append((item**2)**2)
之后你可以
print(lst)
观察
[0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000]
等同于:
lst = []
num_lst = []
for x in range(11):
num_lst.append(x**2)
for x in num_lst:
lst.append(x**2)
print(lst)
输出:
[0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000]
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
这段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]
如果不在list comprehension中怎么写?
我的理解是生成的列表是range(11)中每个数字的平方的平方。所以我明白这是如何获得第一部分的:
lst = []
for item in range(11):
lst.append(item**2)
print(lst)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
但是我怎样才能得到第二部分呢?
循环两次
lst = []
for item in range(11):
lst.append(item**2)
i = 0
for item in lst:
lst[i] = (item**2)
i = i + 1
print(lst)
理解等同于
lst = []
for item in range(11):
lst.append((item**2)**2)
之后你可以
print(lst)
观察
[0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000]
等同于:
lst = []
num_lst = []
for x in range(11):
num_lst.append(x**2)
for x in num_lst:
lst.append(x**2)
print(lst)
输出:
[0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000]
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