2017-04-11 376 views
1

不太確定如何構建它,但我試圖從一個列表添加一個元素到另一個列表。將元素一次添加到列表中的兩個元素

x = [1,1,2,2,3,3] 

a=[['b'],['c'],['d'],['e'],['f'],['g'],['h'],['i'],['j'],['k'],['l'],['m']] 

而且我想它增加了一個元素來獲得類似這樣的輸出:

a=[['b',1],['c',1],['d',2],['e',2],['f',3],['g',3],['h',1],['i',1],['j',2],['k',2],['l',3],['m',3]] 

回答

4

如果你想修改列表,你可以使用一個for循環和使用itertools.cycle

from itertools import cycle 

for ai,xi in zip(a,cycle(x)): 
    ai.append(xi)

這給:

>>> a 
[['b', 1], ['c', 1], ['d', 2], ['e', 2], ['f', 3], ['g', 3], ['h', 1], ['i', 1], ['j', 2], ['k', 2], ['l', 3], ['m', 3]] 

如果你不關心原來的列表,你也可以使用列表理解構建列表一個新的列表:

a[:] = [ai+[xi] for ai,xi in zip(a,cycle(x))] 

這給:

>>> [ai+[xi] for ai,xi in zip(a,cycle(x))] 
[['b', 1], ['c', 1], ['d', 2], ['e', 2], ['f', 3], ['g', 3], ['h', 1], ['i', 1], ['j', 2], ['k', 2], ['l', 3], ['m', 3]] 
+0

如果你想修改列表,或許用'a [:] =' –

+0

@Chris_Rands這樣的片來重新分配列表comp:這是一個好主意,但是單個列表仍然不會更新:所以如果你有一個變量'sublist = a [0]',那個變量不會修改。這不是*本身*是一個問題。但這是需要考慮的。 –

4

這可以使用mod運算符在本地Python中完成:

x = [1,1,2,2,3,3] 
a=[['b'],['c'],['d'],['e'],['f'],['g'],['h'],['i'],['j'],['k'],['l'],['m']] 
results = [[value[0], x[index % len(x)]] for index, value in enumerate(a)] 
print(results)