簡體   English   中英

用Python編寫單行嵌套循環

[英]Writing a single-line nested loop in Python

我正在嘗試將另一個for循環內的for循環壓縮為一行代碼。 這是完整的嵌套循環:

list_of_numbers = []

for i in range(4):
    for n in range(4):
        list_of_numbers.append(n)

我認為下面的代碼行將是將上述代碼編寫為單行嵌套循環的正確方法,但是它給出了錯誤的輸出。

list_of_numbers = [n for n in range(4) for i in range(4)]

如何將第二個示例代碼修改為與第一個示例相同?

(此問題已被重新措辭,因此在2019年8月13日之前給出的所有答案都將使用前面的示例來回答相同的問題。)

可能直觀地進行反擊,在嵌套列表理解中,您需要遵循與長手版本相同的for循環順序。 所以:

[data[((len(data) - 1) - (8 * i)) - (7 - n)] for i in range(int(len(data) / 8)) for n in range(8)]

因此,您的解決方案的主要區別在於生成器部分的順序已切換。

轉換:

collection_c = []
for a in collection_a:
   for b in collection_b:
     collection_c.append(a,b)

您想做:

collection_c = [ (a,b) for a in collection_a for b in collection_b]

因此,在您的示例中,您最終將獲得

new_data = [  data[((len(data) - 1) - (8 * i)) - (7 - n)] for i in range(int(len(data) / 8)) for n in range(8)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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