创建N个子列表的列表

时间:2017-05-20 18:41:33

标签: python list python-3.x loops

我正在编写一个脚本,用于计算整数列表列表元素的总和。我正在努力投入。我希望用户定义嵌套列表的数量。该脚本允许我输入所需数量的列表及其内容,但它只处理最后一个列表并忽略之前的列表。我正在尝试使用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()

1 个答案:

答案 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的列表中。

    < / LI>

因此,您每次循环都会更改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的每个值都附加到里面循环的末尾。

在这种情况下,您实际上并不需要使用不同的iy变量,但最好不要重复使用变量名来执行不同的操作。相同的功能 - 尤其是不要替换循环内的循环计数器(这是一种容易混淆自己并引入错误的方法)。

您的nested_sum()功能(以及最后的main()通话)可以保持不变。