【问题标题】: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 的每个值都附加到循环的末尾内部

    在这种情况下,您实际上不需要使用不同的 iy 变量,但最好避免在同一个函数中重复使用变量名来做不同的事情——尤其是不要替换循环内的循环计数器(这是一种容易混淆和引入错误的方法)。

    您的 nested_sum() 函数(以及最后的 main() 调用)可以保持不变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      相关资源
      最近更新 更多