簡體   English   中英

撤消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]

如果它不在列表理解中,它會怎么寫?

我的理解是生成的列表是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM