用Python函数求列表的和

2024-09-27 00:19:18 发布

您现在位置:Python中文网/ 问答频道 /正文

def somalist (lista):
    listasoma = [0,0,0,0,0,0,0,0,0,0,0]
    for i in lista:
        for g in i:
            if i.index(g) != 0 and i.index(g) != 1 and i.index(g) != 2 and i.index(g) != 3:
                listasoma[i.index(g)] += g
            else:
                listasoma[i.index(g)] = g
            print(listasoma)
    return(listasoma)

x = [[1,2,3,4,5,6,7,8,9,10,11],[1,2,3,4,5,6,7,8,9,10,11],[1,2,3,4,5,6,7,8,9,10,11]] print(somalist(x))

就是这个函数,它对每个子列表求和,但它保留索引[0]、[1]、[2]和[3]的值,并对其他子列表求和。在这个例子中,我将使用list x,在这个list中函数正常工作。程序的退出是:

[1, 2, 3, 4, 32, 18, 21, 24, 27, 30, 22]

就是我说的,它保留成员[0]、[1]、[2]、[3],并对每个子列表的其他索引求和

但当我们多次使用某个数字时,它就失败了

使用:X = [[1,2,3,4,5,6,7,8,9,10,11],[1,2,3,4,**6**,6,7,8,9,10,11],[1,2,3,4,5,6,7,8,9,10,11]]

the 6 (index 4) in second sublist was writen twice (the another at the index 5 at the same sublist)

出口是:[1, 2, 3, 4, **22**, 12, 21, 24, 27, 30, 33]

这是错误的

正确的出口应该是:[ 1, 2, 3, 4, 16, 18, 21, 24, 27, 30, 33]

有人能告诉我我的代码哪里错了吗


Tags: andthe函数in列表forindexdef
1条回答
网友
1楼 · 发布于 2024-09-27 00:19:18

我建议完全放弃index()方法

def somalist (lista):
    return lista[0][:4] + [sum(item) for item in list(zip(*lista))[4:]]

这适用于具有重复元素的list

                                            v
>>> x = [[1,2,3,4,5,6,7,8,9,10,11],[1,2,3,4,5,6,7,8,9,10,11],[1,2,3,4,5,6,7,8,9,10,11]]
>>> X = [[1,2,3,4,5,6,7,8,9,10,11],[1,2,3,4,6,6,7,8,9,10,11],[1,2,3,4,5,6,7,8,9,10,11]]
>>> print(somalist(x))
[1, 2, 3, 4, 15, 18, 21, 24, 27, 30, 33]
>>> print(somalist(X))
[1, 2, 3, 4, 16, 18, 21, 24, 27, 30, 33]
             ^^

相关问题 更多 >

    热门问题