繁体   English   中英

尝试使用“for i in range(len(list))”循环对列表的特定元素求和

[英]Trying to sum specific elements of a list with a "for i in range(len(list))" loop

list=[[10,12,22],[18,20,38],[32,35,67],[57,66,123],[103,121,224]] 

这是我正在循环的列表。

for i in range(len(list)):
    print(f"The sum of every 3rd element within each sub list is {sum(list[i][2])}

当我运行它时,错误消息是:

TypeError: 'int' object is not iterable

这是不可能做到的,还是我犯了一个愚蠢的错误? 我对编码很陌生,所以对某些人来说似乎是一个非常愚蠢的问题表示歉意。

我会帮你的。 首先不要使用 python 关键字作为变量名 - 所以list不好。 其次,我看到很多人遍历列表的范围,然后按索引引用。 这是没有必要的。

l =[[10,12,22],[18,20,38],[32,35,67],[57,66,123],[103,121,224]]

我如何经常看到它完成

for i in range(len(l)):
    print(l[i][2])

应该怎么做

for x in l:
    print(x[2])

您正在寻找的答案:

sum(x[2] for x in l)

您的代码分别获得每个第 i 个子数组的第 3 个 integer,并且不能将 int 求和到自身。 这是执行此操作的正确方法:

arr = [[10, 12, 22], [18, 20, 38], [32, 35, 67], [57, 66, 123], [103, 121, 224]]
s = 0
for i in range(len(arr)):
    s += arr[i][2]
print(f"The sum of every 3rd element within each sub array is {s}

是的,你犯了一个愚蠢的错误;-)。 这: sum(list[i][2]) 意味着你对 list[i] 的第二个元素求和,它是一个 int。 这是不可迭代的。 使用列表推导式就可以了

print(f"The sum of every 3rd {sum([j[2] for j in list])}")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM