2016-06-08 43 views
0

我有3個不同的列表,我需要合併它們。只需要一個元素或添加一個inteire list來擴展列表就很容易。但是在中間添加更多列表或添加變量時,似乎不可能。擴展:從其他列表(或變量)列表中合併字符串

list1 = [ 'a', 'b', 'c'] 
list2 = [ 'd', 'e', 'f'] 
list3 = ['g', 'h', 'i'] 

添加只是一個列表:

list1.extend(list3) 

返回:

['a', 'b', 'c', 'g', 'h', 'i'] 

添加兩個列表:

list1.extend((list2,list3)) 

返回兩個名單內的另一個列表:

['a', 'b', 'c', ['d', 'e', 'f'], ['g', 'h', 'i']] 

添加兩個列表與運營商 '+':

list1.extend((list2 + list3)) 

返回

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] 

,但如果你需要做的是這樣的:

list1.extend(('test' + list2 + fetch[0] + list3 + etc, etc, etc)) 

不會工作。無法並置。

一個臨時的解決增加了循環可能是:

for l1 in list2: 
    list1.extend(l1) 
for l2 in list3: 
    list1.extend(l2) 

終於有:

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] 

顯然線和週期

浪費是否有存檔更有效的方法沒有使用外部模塊?

編輯:簡單列表的例子只是爲了瞭解基本上我需要什麼。真正的問題是在'.extend'的一行上添加字符串或數字或索引。

解決:

韋恩沃納驅動我到正確的方向來連接不同類型的元件。

list1 = [ 'a', 'b', 'c'] 
list2 = [ 'd', 'e', 'f'] 
list3 = ['g', 'h', 'i'] 

for other_list in (['test'], str(1), list2[2], list2[1]): 
    list1.extend(other_list) 

結果:

['a', 'b', 'c', 'test', '1', 'f', 'e'] 
+0

您的預期輸出是否等於'list1 + list2 + list3'? –

+0

列表+列表工作正常,直到您需要添加str o int。 –

+0

@ Two-BitAlchemist:no。我意識到(之後)這個例子不是我想要的。我已經更新了我的問題。下一次我會在發送之前再次準備好。當我需要在列表中添加不同類型的元素時,遇到一些麻煩。 –

回答

2

如果你正在尋找與N其他一些名單延伸的單一列表的清潔方式,它是那樣簡單:

my_list = ['a', 'b', 'c'] 
for other_list in (some_iterable, some_other_iterable, another_iterable): 
    my_list.extend(other_list) 

我想不出任何更合理的解決方案。

+0

是的,現在是最好的解決方案。謝謝。 –

2

只需使用extend對於每個要上添加列表:

list1.extend(list2) 
list1.extend(list3) 
1

您可以通過添加其他的名單extend一個兩個:

list1 = [ 'a', 'b', 'c'] 
list2 = [ 'd', 'e', 'f'] 
list3 = ['g', 'h', 'i'] 

list3.extend(lis1 + list2) 
+0

這是向前邁進的一步,但如果您嘗試類似list1.extend(list2 [1] + list3)的東西,則不起作用。 –

+0

如果您更改了可行的解決方案,您爲什麼會期望它仍然有效? –

+0

@ScottHunter我也想說 –

相關問題