2017-09-13 72 views
0

我有一個這樣的名單:Python中插入一個列表清單

a = ["a","b","c","d","e"] 

如何插入一個詞列表中的每個項目的結束,讓他們作爲列表本身?

預期輸出:

a = [("a","TEST"),("b","TEST"),("c","TEST"),("d","TEST"),("e","TEST")] 

我已經嘗試了很多辦法,但沒有運氣得到那個。

回答

9

創建的項目和所期望的字一個元組:

word = "TEST" 
a = ["a","b","c","d","e"] 
new_a = [(i, word) for i in a] 

輸出:

[('a', 'TEST'), ('b', 'TEST'), ('c', 'TEST'), ('d', 'TEST'), ('e', 'TEST')] 

另外,使用map

new_a = list(map(lambda x: (x, "TEST"), a)) 
+0

對不起,我又來打擾,有沒有什麼辦法,以消除「一」和「測試」之間的空間?我需要解壓它爲分類器功能 –

+0

@KennyC這個空間是自然的Python語法。 '('a','TEST')'等價於'(「a」,「TEST」)'。 – Ajax1234

+0

請勿使用地圖。列表解析更爲pythonic – syntacticmarmalade

2

您可以使用zip

a = ["a","b","c","d","e"] 
new_a = zip(a, ["TEST"] * len(a)) 

輸出:

[('a', 'TEST'), ('b', 'TEST'), ('c', 'TEST'), ('d', 'TEST'), ('e', 'TEST')] 
2

使用zip_longestitertools模塊像下面的另一種方法(但在溶液去與應Ajax1234's一個列表中的理解使用元組):

from itertools import zip_longest 

l = ['a', 'b', 'c', 'd', 'e'] 
res = list(zip_longest(l, ['TEST'], fillvalue='TEST')) 

輸出:

>>> res 
[('a', 'TEST'), ('b', 'TEST'), ('c', 'TEST'), ('d', 'TEST'), ('e', 'TEST')] 
1

不是很時尚,但類似於其他常用的語言:

a = ["a","b","c","d","e"] 
b = [] 

for x in a: 
    b.append ((x, 'TEST')) 

a = b 

print a 
+0

也許在解決方案中添加兩個列表 – Abe