[英]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]
如果它不在列表理解中,它會怎么寫?
我的理解是生成的列表是 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.