【发布时间】:2015-06-11 22:28:40
【问题描述】:
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] 并对其他索引求和。在此示例中,我将使用列表x,在此列表中该功能正常工作。程序的出口是:
[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]]
第二个子列表中的 6(索引 4)被写入两次(另一个在同一子列表的索引 5 处)
出口是:[1, 2, 3, 4, **22**, 12, 21, 24, 27, 30, 33]
错了!
正确的出口应该是:[ 1, 2, 3, 4, 16, 18, 21, 24, 27, 30, 33]
谁能告诉我我的代码哪里错了?
【问题讨论】:
-
请选择一个更好的标题
-
对不起,这是我在 stackoverflow 中的第一个主题
-
如documentation 中所述,
index()只找到第一个匹配项。 -
for g in i: 这里你应该使用 enumerate...
-
@TigerhawkT3 我明白了,但我该如何解决这个问题?你知道另一个替代
index()的函数吗? @EricLevieil 我该怎么做?,我无法理解你
标签: python list function python-3.x