【问题标题】:Creating a list of N sublists创建一个包含 N 个子列表的列表
【发布时间】:2017-05-20 18:41:33
【问题描述】:
我正在编写一个脚本来计算整数列表的元素之和。我正在为输入而苦苦挣扎。我希望用户定义嵌套列表的数量。该脚本让我输入所需数量的列表及其内容,但它只处理最后一个列表并忽略以前的列表。我正在尝试使用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()
【问题讨论】:
标签:
python
list
python-3.x
loops
【解决方案1】:
你已经接近了,但你的这部分代码没有做你想做的事:
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() 调用)可以保持不变。