【问题标题】:how to create a list of lists如何创建列表列表
【发布时间】:2012-09-06 04:59:15
【问题描述】:

我的 Python 代码每次循环都会生成一个列表:

list = np.genfromtxt('temp.txt', usecols=3, dtype=[('floatname','float')], skip_header=1)

但我想保存每一个 - 我需要一个列表,对吗?

所以我尝试了:

list[i] = np.genfromtxt('temp.txt', usecols=3, dtype=[('floatname','float')], skip_header=1)

但是 Python 现在告诉我“列表”没有定义。我不确定如何定义它。另外,列表的列表和数组一样吗??

谢谢!

【问题讨论】:

  • 请显示整个循环,而不仅仅是执行分配的行。
  • 创建一个与内置函数同名的变量是个坏主意。
  • 数组不是列表的列表。 “数组”在不同的语言中有不同的含义(在 C 中,数组不能调整大小,在 Perl 中可以),但在大多数情况下,它大致类似于常规 Python 列表。
  • 显示文件“temp.txt”的示例,并说明您希望python中的结果是什么样的。
  • 创建一种允许随意变量重新定义内置函数的语言是一个坏主意。除非该语言的目的是允许其他人使用该语言重写该语言,因为该语言设计不佳。

标签: python list


【解决方案1】:

您想创建一个空列表,然后将创建的列表附加到它。这将为您提供列表列表。示例:

>>> l = []
>>> l.append([1,2,3])
>>> l.append([4,5,6])
>>> l
[[1, 2, 3], [4, 5, 6]]

【讨论】:

  • 这很好,但我很难理解为什么下面的结果不同:>>> l=[1,2,3] >>> l.append([4,5,6]) >>> l [1, 2, 3, [4, 5, 6]]
  • 也许这有帮助? >>> l=[[1,2,3]] >>> l.append([4,5,6]) >>> l [[1, 2, 3], [4, 5, 6]]
  • @user222216 如果您想对列表求和,请使用 + ,否则您所做的是在位置 0->1、位置 1->2、位置 2->3,最后你放在位置 3 整个列表-> [4,5,6]
【解决方案2】:

在您的循环之前创建您的列表,否则它将在每个循环中创建。

>>> list1 = []
>>> for i in range(10) :
...   list1.append( range(i,10) )
...
>>> list1
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [2, 3, 4, 5, 6, 7, 8, 9], [3, 4, 5, 6, 7, 8, 9], [4, 5, 6, 7, 8, 9], [5, 6, 7, 8, 9], [6, 7, 8, 9], [7, 8, 9], [8, 9], [9]]

【讨论】:

    【解决方案3】:

    使用 append 方法,例如:

    lst = []
    line = np.genfromtxt('temp.txt', usecols=3, dtype=[('floatname','float')], skip_header=1)
    lst.append(line)
    

    【讨论】:

    • 谢谢伙计。我只使用“列表”作为示例,但我看到我应该使用其他东西。所以我按照您的建议进行了这项工作。现在,当我打印 list[0] 或 list[7] 等时,我得到了正确的答案。但是当我尝试使用打印列表打印整个内容时,我得到一个看起来很奇怪的读数,其中包含单词“array”和“dtype”。
    【解决方案4】:

    首先不要使用list作为变量名——这是一个内置函数。

    我不太清楚你在问什么(多一点上下文会有所帮助),但也许这会有所帮助-

    my_list = []
    my_list.append(np.genfromtxt('temp.txt', usecols=3, dtype=[('floatname','float')], skip_header=1))
    my_list.append(np.genfromtxt('temp2.txt', usecols=3, dtype=[('floatname','float')], skip_header=1))
    

    这将创建一个名为 my_list 的列表(python 中的一种可变数组),前 2 个索引中包含 np.getfromtext() 方法的输出。

    第一个可以用my_list[0]引用,第二个可以用my_list[1]引用

    【讨论】:

      【解决方案5】:

      今天刚遇到同样的问题...

      为了创建列表列表,您首先必须将数据、数组或其他类型的变量存储到列表中。然后,创建一个新的空列表并将刚刚创建的列表附加到它上面。最后你应该得到一个列表列表:

      list_1=data_1.tolist()
      list_2=data_2.tolist()
      listoflists = []
      listoflists.append(list_1)
      listoflists.append(list_2)
      

      【讨论】:

        猜你喜欢
        • 2020-04-04
        • 1970-01-01
        • 2015-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多