2017-08-31 29 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)] 

这个怎么用拉链