【问题标题】:Returning a list to another list from a for-loop从for循环将列表返回到另一个列表
【发布时间】:2013-07-20 04:40:33
【问题描述】:

大家好,我有一个在 for 循环结束时创建的列表。最后一行是

newlist.append(variable)

我运行循环,它返回一个值,但在下一个循环中被覆盖。因此,我想要做的是将 newlist 返回到 newlist2 以便当我遍历循环时,我可以将所有列表放入 newlist2 中,以便返回所有值。

例如在第一个循环的末尾,列表是

newlist = ['name', 20, 50, 70] 

我想把它附加到

newlist2 = [['name', 20, 50, 70]]

然后第二次通过我得到

 newlist = ['name', 50, 70, 90] 

我想将它附加到 newlist2 中,这样

newlist2 =     [['name', 20, 50, 70], ['name', 50, 70, 90]]

这可能吗?我做错了还是需要使用extend代替??

编辑:这是已经在帮助下构建的代码。

newlist=[]
for each in StationList:
    if calculateDistance(Eastingbase, Northingbase, each[1], each[2])< radius: 
        Relevantfilename = each[0]
        print Relevantfilename
        with open(Relevantfilename, 'rU') as input: 
            dL= list(csv.reader(input))
            total2 = sum(int(i[2]) for i in dL if '2011' in i)
            print total2, "is average for", each[0]
            try:
                average = total2 / float(len([int(i[2]) for i in dL if '2011' in i]))
                print average,"is average for", each[0]
            except ZeroDivisionError: 
                print 0
            each.append(average)  
        print each
        newlist.append(each)

【问题讨论】:

  • 是的,您只能使用append 来完成。你能展示你的代码吗?
  • 只需将您拥有的代码添加到您的问题中。
  • @RohitJain 代码加了可以返回列表吗??

标签: python list for-loop append extend


【解决方案1】:

正如 Rohit Jain 建议的那样,在 for 循环之外添加一个新列表并追加。

我最初的尝试是在 for 循环中追加一个新列表。因此,每次运行循环时,在每个列表中计算和生成的值都会被添加到循环中,但是由于列表未放置在列表之外,因此会被覆盖。因此,要从 for 循环中的列表返回列表,您只需在前面放置一个新列表并附加到该列表。

现在我的代码中更新了答案。

【讨论】:

    【解决方案2】:

    我想你想做这样的事情:

    >>> def list_of_list():
    ...     all_lists = []
    ...     for _ in range(3):
    ...         all_lists.append([1, 2])
    ...     return all_lists
    ... 
    >>>
    >>> list_of_list()
    [[1, 2], [1, 2], [1, 2]]
    

    我每次都添加[1, 2] 用于演示目的。您可以在那里添加任何列表。

    【讨论】:

    • @user2603519。将其添加到您的问题中。
    • 只需在 for 循环之外创建一个空列表。并将each 附加到您要打印的列表中。
    • 啊,我明白了。简单的修复。我现在意识到出了什么问题。我试图将值返回到 for 循环内的列表中,因此发生的事情是每次都被覆盖。
    • @user2603519。很高兴你明白了。 :)
    • @user2603519。您可以通过单击答案旁边的箭头将答案标记为已接受。
    猜你喜欢
    • 1970-01-01
    • 2021-12-17
    • 2022-01-06
    • 1970-01-01
    • 2014-01-24
    • 2021-10-22
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    相关资源
    最近更新 更多