簡體   English   中英

列表列表的列表理解

[英]List comprehension for a list of lists

好的,所以我有一份清單清單

list = [['a','b','c'], ['1','2','3'], ['x','y','z']]

我想編輯每個列表的第一項,以便它前面有一個符號。 一種 ”?” 在這個例子中。 我想我可以使用列表理解來做到這一點。 與此類似的東西:

list = ['?'+x for x in i[0] for i in list]

但這只是給我一個錯誤。 這個列表理解的東西讓我困惑,我該怎么做?

l = [['?' + i[0]] + i[1:] for i in l]    (l is the list you pass in)

首先,不要命名變量list ; 你現在正在屏蔽內置的list()類型 ,如果你希望list()仍然是代碼中的其他類型 ,那么很容易導致錯誤。

要將字符串添加到每個嵌套列表的第一個元素,請使用簡單的列表解析:

outerlist = [['?' + sub[0]] + sub[1:] for sub in outerlist]

這將從嵌套列表構建一個新列表,方法是將一個元素列表與第一個更改的元素連接起來,再加上子列表的其余部分。

演示:

>>> outerlist = [['a','b','c'], ['1','2','3'], ['x','y','z']]
>>> [['?' + sub[0]] + sub[1:] for sub in outerlist]
[['?a', 'b', 'c'], ['?1', '2', '3'], ['?x', 'y', 'z']]
>>> [['?' + el if i==0 else el for i,el in enumerate(subl)] for subl in L]
[['?a', 'b', 'c'], ['?1', '2', '3'], ['?x', 'y', 'z']]

此外,如果您希望修改初始列表,則可以在不創建新列表的情況下在其中進行修改:

>>> for sublist in L:
    sublist[0] = '?' + sublist[0]   
>>> L
[['?a', 'b', 'c'], ['?1', '2', '3'], ['?x', 'y', 'z']]

這應該工作:

>>> l = [['a','b','c'], ['1','2','3'], ['x','y','z']]
>>> [["?"+a,b,c] for [a,b,c] in l]
[['?a', 'b', 'c'], ['?1', '2', '3'], ['?x', 'y', 'z']]
>>> 

暫無
暫無

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

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