2017-08-31 69 views
1

我試圖建立一個多字母密碼,但我找不到添加一個較小的列表到一個更大的列表的方式,我已經嘗試了大名單與列表解析,但仍不能做到這一點。請幫忙!我想小名單不斷增加相同數量較大名單如何在一個較小的列表中添加號碼到蟒蛇continiously

所以可以說我有2只列出這樣的:

x = [1,2,3] 
y = [4,5,6,7,8,9] 
z = [i + j for i,j in zip(x,y)] 

結果如下

print(z) 
[5,7,9] 

怎麼能我做它,所以它是:

[5,7,9,8,10,12] 

即它會保持增加相同數量的長名單, 感謝你的幫助

+0

這是因爲'zip'功能上最短的迭代停止。因爲你的第一個列表有3個元素,它會在3次迭代後停止。 你可以在這裏找到答案 - https://stackoverflow.com/a/1277311/840582 – Vinny

+0

@Vinny您共享不解決這個問題的鏈接。這個問題要環回並重新使用的值,該鏈接顯示瞭如何將短名單結束後墊了默認值。 – CoryKramer

+0

你說得對,是我不好。我錯過了重新迭代值的那部分。 – Vinny

回答

5

您可以使用itertools.cycle環回通過x需要

>>> import itertools 
>>> x = [1,2,3] 
>>> y = [4,5,6,7,8,9] 
>>> z = [i + j for i, j in zip(itertools.cycle(x), y)] 
>>> z 
[5, 7, 9, 8, 10, 12] 
+0

謝謝!那完美的工作 – MAUCA

1

這是最簡單的方法,我想: z = [y[i] + x[i % len(x)] for i in range(len(y))]

0
x = [1,2,3] 
y = [4,5,6,7,8,9] 
z=[a+b for a,b in zip((x*(int(len(y)/len(x))))[:len(y)],y)] 

這個怎麼用拉鍊