13

Pythonには非常に新しいので、多次元配列に頭を包み込もうとしています。私は既存の投稿を読みましたが、それらのほとんどは次元が指定された多次元配列を扱っています。私の場合、可能な行の総数の次元がありません。CSV で 7 列のファイルが処理されていますが、各行は、基準を満たすか失敗するかに応じて、配列にドラフトされます。基本的に各行は 7 列ですが、行数は予測できません。行はリストとして扱われています。

私の目的は、適格な行の多次元配列を作成し、配列内の値にアクセスできるようにすることです。これどうやってするの?

基本的に、2Dリストの作成にどのように取り組むのですか:

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

上記はmxnサイズのリストを作成しますが、私の場合、m(行)ではなくn(列)しか知りません

4

6 に答える 6

8

リストを使用するためにリストの長さを事前に定義する必要がなく、リストに追加することができるリストにリストを入れ子にします。別の次元が必要な場合は、別のリストを最も内側のリストに追加するだけです。

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

それらを簡単に使用するには、ネストされたリスト内包表記を見てください。

于 2012-08-13T19:30:46.067 に答える
3

私はこれを発見して、幅が8要素で、他の次元で動的な単純な2D配列リストを作成しました

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]

等々.....

于 2014-01-10T21:58:31.010 に答える
3

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))
于 2012-08-13T19:32:02.463 に答える
0

「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%確信していません...

于 2012-08-13T19:44:51.827 に答える