2017-09-13 120 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