Python中动态大小的多维数组

Python中动态大小的多维数组,python,multidimensional-array,Python,Multidimensional Array,对python来说非常陌生,所以我试图将注意力集中在多维数组上。我阅读了现有的文章,其中大部分都涉及给定维度的多维数组。在我的例子中,我没有可能的行总数的维度。正在处理一个文件,该文件是CSV,有7列,但根据是否符合标准,每行都会相应地起草到一个数组中。基本上每行有7列,但行数无法预测。该行被视为一个列表 我的目标是创建一个合格行的多维数组,然后能够访问数组中的值。我该怎么做 基本上,如何创建二维列表: list_2d = [[foo for i in range(m)] for j in ra

对python来说非常陌生,所以我试图将注意力集中在多维数组上。我阅读了现有的文章,其中大部分都涉及给定维度的多维数组。在我的例子中,我没有可能的行总数的维度。正在处理一个文件,该文件是CSV,有7列,但根据是否符合标准,每行都会相应地起草到一个数组中。基本上每行有7列,但行数无法预测。该行被视为一个列表

我的目标是创建一个合格行的多维数组,然后能够访问数组中的值。我该怎么做

基本上,如何创建二维列表:

list_2d = [[foo for i in range(m)] for j in range(n)]

上面创建了一个mxn大小的列表,但在我的例子中,我只知道n(列)而不知道m(行)

在列表中嵌套列表,您不需要预定义列表的长度就可以使用它,并且可以附加到列表中。想要另一个维度,只需将另一个列表附加到最内部的列表

[[[a1, a2, a3]  , [b1, b2, b3] , [c1, c2, c3]],
[[d1, d2, d3]  , [e1, e2, e3] , [f1, f2, f3]]]

要方便地使用它们,只需查看python中的

,就不需要在正手时声明列表大小

将行读取到文件的示例如下:

file_name = "/path/to/file"
list = []

with open(file_name) as file:
  file.readline
  if criteria:
    list.append(line)
用于多维列表。在上的函数中创建内部列表,并将其返回到附加行。像这样:

def returns_list(line):
  multi_dim_list = []
  #do stuff
  return multi_dim_list
将第一个代码中的最后一行与交换

list.append(returns_list(line))

如果保证有“n”列,则可以在内存中转置

from collections import defaultdict
import csv

cols = defaultdict(list)

with open('somefile.csv') as csvin:
    for row in csv.reader(csvin):
        for colno, col in enumerate(row):
            cols[colno].append(col)

仍然不能100%确定这是您的问题,但是…

我发现这是为了创建一个简单的二维数组列表,该列表有8个元素宽,在另一个维度上是动态的

list2d=[[] for i in xrange(8)]
然后您可以将任意数量的变量分配给8宽数组

list2d[0]=[1,2,3,4,5,6,7,8,9,10,11]
list2d[1]=[12,13,14,15,16,17,18,19]

等等……

你甚至可以试试这个,它对我很管用

s=[[]表示范围(n)内的y]

请尝试以下操作

#beg 

a=[[]]

r=int(input("how many rows "))
c=int(input("how many cols "))

for i in range(r-1):
    a.append([])

for i in range(r):
    print("Enter elements for row ",i+1)
    for j in range(c):
        num=int(input("Enter element "))
        a[i].append(num)

for i in range(len(a)):
     print()
     for j in range(len(a[i])):
         print(a[i][j],end="  ")

endumm,…假设我想创建二维列表,每个成员都可以通过指定列和行来访问,现在给定大小..我可以做list_2d=[[foo for I in range(10)]for j in range(10)],但我只知道我的二维数组中的列总数将是n,行总数是动态的,可以是n,我该如何处理这个问题?这看起来像一个列表列表…如何使用它访问特定的索引?假设我只想获取值e2,那么我正在查看哪个索引?列表[1][1][1]对于那些不愿意点击概念证明的人。@vornipoto我点击了它。……现在我正在阅读如何在python中迭代二维数组……感谢您的帮助查找列表而不是数组,列表是您在这里要使用的东西。数组完全是另一回事。:)这里还有其他一些可用的方法,我会小心不要在这里使用术语
array
(即使OP使用了)。“数组”一词具有误导性,因为有一个
array
模块,这是
numpy.ndarray
的通用名称,在谷歌搜索
python array
时很可能会出现该名称。谢谢提醒,我现在已经换了。我每天使用3-4种语言有时很难将它们分开。因为问题表明行的数量是不可预测的,因此在上面的代码中,我们无法获得
r
的值。最好阅读此EOF文件,并继续将行列表附加到列表的主列表
a