簡體   English   中英

列表理解中的可變范圍

[英]Variable scope within list comprehension

我有一個元組列表,其中包含一個字符串和另一個列表。

[('string1', ['a1', 'b1']),
 ('string2', ['a2', 'b2']),
 ('string3', ['a3', 'b3'])]

我無法弄清楚使用列表理解來得出類似的結果。

[['string1a1', 'string1b1'],
 ['string2a2', 'string2b2'],
 ['string3a3', 'string3b3']]

我嘗試了類似的東西

results = [join(ministring, i) for i in (miniarray for (ministring, miniarray) in myarray)]

但是我對擴展/表達式(?)中的每個變量范圍感到困惑。

就如此容易:

lst = [('string1', ['a1', 'b1']),
 ('string2', ['a2', 'b2']),
 ('string3', ['a3', 'b3'])]

res = [[master + tail for tail in sublist] for master, sublist in lst]

返回:

[['string1a1', 'string1b1'], ['string2a2', 'string2b2'], ['string3a3', 'string3b3']]

請注意,使用這種方法時,元組內部子列表的長度是固定的。 它可以任意長。

您可以執行以下操作:

data = [('string1', ['a1', 'b1']),
 ('string2', ['a2', 'b2']),
 ('string3', ['a3', 'b3'])]

result = [[s + e1, s + e2] for s, [e1, e2] in data]
print(result)

產量

[['string1a1', 'string1b1'], ['string2a2', 'string2b2'], ['string3a3', 'string3b3']]

請注意,這假設內部列表僅包含兩個元素。

嘗試這個:

new_list = list(map(lambda x: [x[0]+x[1][0], x[0]+x[1][1]],data))

暫無
暫無

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

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