簡體   English   中英

為 Python 中的列表拆垛制作一個線性代碼

[英]Make one liner code for list unstacking in Python

max_depth = [[i]*36 for i in range(1,11)]
max_depth = [j for k in max_depth for j in k]

我想在一行中轉換上面的代碼。

不是使用[i]*36創建嵌套列表,而是添加另一個for來檢索i 36次:

[i for i in range(1,11) for _ in range(36)]

這相當於:

max_depth = []
for i in range(11):
    for _ in range(36):
        max_depth.append(i)

使用itertools模塊:

from itertools import chain

max_depth = list(chain.from_iterable([i]*36 for i in range(1,11)))

使用itertools更進一步,

from itertools import chain, repeat

max_depth = list(chain.from_iterable(repeat(i, 36) for i in range(1,11)))

最直接的解決方案:

[j for k in [[i]*36 for i in range(1,11)] for j in k]

暫無
暫無

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

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