我正在编写一个脚本,用于计算整数列表列表元素的总和。我正在努力投入。我希望用户定义嵌套列表的数量。该脚本允许我输入所需数量的列表及其内容,但它只处理最后一个列表并忽略之前的列表。我正在尝试使用sp=[y]
将所有列表都放入sp
,但它无效。
def nested_sum(sp):
total = 0
for nested in sp:
total += sum(nested)
return total
def main():
n = int(input())
for y in range(0,n):
y = [int(x) for x in input().split()]
sp=[y]
print(sp)
print(nested_sum(sp))
main()
答案 0 :(得分:3)
您已经关闭了,但您的代码的这部分内容并不是您想要的:
for y in range(0,n):
y = [int(x) for x in input().split()]
sp=[y]
上面的第一行迭代一系列整数,依次将y
设置为每个整数。
第二行每个都运行"转"通过循环,替换您刚设置的y
列表理解[int(x) for x in input().split()]
的结果。
第三行在循环结束后运行,并将最终y
值自身放入名为sp
的列表中。
因此,您每次循环都会更改y
两次的值,但每次更换该值时,前一个值都会丢失,而sp
最终会变为列表仅包含y
的最终值。
您需要做的是将每个值保存在另一个列表中。您可以使用list.append()
方法执行此操作:
def main():
n = int(input())
sp = [] # create an empty list 'sp'
for i in range(0,n): # use a separate loop counter variable 'i'
y = [int(x) for x in input().split()]
sp.append(y) # append y to the end of sp
print(sp)
print(nested_sum(sp))
如您所见,sp
列表是在循环开始之前设置的,y
的每个值都附加到里面循环的末尾。
在这种情况下,您实际上并不需要使用不同的i
和y
变量,但最好不要重复使用变量名来执行不同的操作。相同的功能 - 尤其是不要替换循环内的循环计数器(这是一种容易混淆自己并引入错误的方法)。
您的nested_sum()
功能(以及最后的main()
通话)可以保持不变。