Python)我想添加两个不同的len顺序列表

时间:2018-04-27 14:54:20

标签: python list add

我想添加list1=[1,2,3,4,5]list2=[1,1,1,1,1,1,1]

我想要的是什么

list3=[2,3,4,5,6,1,1]

这是我的错误代码

lis1=[1,2,3,4,5] #len=5
list2=[1,1,1,1,1,1,1] #len=7
if len(list1)>len(list2):
    for i in range(len(list1)):
        list2.append(0) if list2[i]=[]
        list3[i]=list1[i]+list2[i]
else:
    for i in range(len(list2)):
        list1.append(o) if list1[i]=[]
        list3[i]=list1[i]+list2[i]
print(list3)

3 个答案:

答案 0 :(得分:9)

您可以使用 itertools

中的izip_longest

<强>实施例

from itertools import izip_longest
list1=[1,2,3,4,5]
list2=[1,1,1,1,1,1,1]
print([sum(i) for i in izip_longest(list1, list2, fillvalue=0)])

<强>输出:

[2, 3, 4, 5, 6, 1, 1]

答案 1 :(得分:0)

基本上你想要将两个列表一起添加,如果列表不够长,则填充0。所以我直接从您的代码修改而没有任何库:

list1=[1,2,3,4,5] #len=5
list2=[1,1,1,1,1,1,1] #len=7
list3 = [] # make a list3 
if len(list1)>len(list2):
    for i in range(len(list1)):
       # if list2[i]=[] this line is wrong, you can't compare non-exist element to a empty array
        if i >= len(list2):
            list2.append(0)
        list3.append(list1[i]+list2[i])
else:
    for i in range(len(list2)):
        if i >= len(list1):
            list1.append(0)
        list3.append(list1[i]+list2[i])
print(list3)

答案 2 :(得分:0)

我会尽量使这段代码尽可能基本。首先,您从不想要复制粘贴您的代码。应首先评估您的if / else语句。

lis1=[1,2,3,4,5] #len=5
list2=[1,1,1,1,1,1,1] #len=7
longer, shorter = [], []
if len(list1) > len(list2):
    longer, shorter = list1, list2
else:
    longer, shorter = list2, list1

现在我们已经确定哪个列表更长,哪个更短,只需命名我们的列表longershorter。我们的下一个任务是编程算法。我们想要做的是迭代longer列表并添加我们找到的每个int:

for i in range(len(longer)):
    longer[i] += shorter[i]
print(longer)

我们尝试运行该程序并繁荣,它以out of range exception失败。所以我们确定问题,并修复我们的代码:

for i in range(len(longer)):
    if (i > len(shorter)): ## We make sure to not call shorter[i] if there is no such element
        longer[i] += shorter[i]
print(longer)

有问题吗?