lst = [[2, 3, 4], [1, 1]]
sum = 0
for i in range(len(lst)):
for j in range(len(lst)):
sum += lst[i][j]
print(sum)
我是Python的新手,你能解释一下输出是7
吗?
答案 0 :(得分:2)
你的两个循环都超出了len(lst)
的范围,而内部循环可能会在len(lst[i])
的范围内循环。然而,对此的真正解决方法是不循环遍历range(len(...))
,而是遍历元素:
for sub_list in lst: # Loop over each list inside of lst
for value in sub_list: # Loop over each number in sub list
sum += value
这样更干净,更不容易出现像你这样的错误,而且阅读效果更好。
答案 1 :(得分:1)
您的代码中可能存在错误:
lst = [[2, 3, 4], [1, 1]]
sum = 0
for i in range(len(lst)):
for j in range(len(lst)): # bug ?
sum += lst[i][j]
print(sum)
这是什么意思? {/ strong> i
和j
的范围将超过lst
的长度,即2。因此,您将查找组合(i,j)
为(0,0),(0,1),(1,0),(1,1)
。因此忽略 (0,2)
。快速解决方案是:
lst = [[2, 3, 4], [1, 1]]
sum = 0
for i in range(len(lst)):
for j in range(len(lst[i])):
sum += lst[i][j]
print(sum)
然而,对集合使用for
循环更优雅,更不容易出错:
lst = [[2, 3, 4], [1, 1]]
sum = 0
for row in lst:
for element in row:
sum += element
print(sum)
或者你可以使用sum(..)
内置:
lst = [[2, 3, 4], [1, 1]]
the_sum = 0
for row in lst:
the_sum += sum(row)
print(the_sum)