0

配列から要素を取得して 2 次元配列に入れようとしましたが、それを行う方法があるかどうか疑問に思っていましたか?

例えば

h = ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'T']
a = Grid(3,3) #creates empty 2d array 

出力は

H H H
H H H
H H T

私はこのようなことをしてきました。

for row in range(a.getHeight()):
    for col in range(a.getWidth():
        for i in range(len(h):
            a[row][col] = h[i]

しかし、私はこれを出力として取得します:

T T T
T T T
T T T
4

2 に答える 2

4

私はこのようなことをするかもしれないと思います:

hh = iter(h)
for row in range(a.getHeight()):
    for col in range(a.getWidth()):
         a[row][col] = next(hh)

aこれは、適切に宣言したことを前提としています。つまり、次のように設定されたリストでaはありません。

a = [[None]*ncol]*nrow

同じ内部リストaへの参照の束を保持するため、これは機能しません。もちろん、 yourはとを持っているので単純なリストではありません。そのため、どのタイプのオブジェクトがすでに処理されていると思います。agetHeightgetWidth


を使用している場合numpy、これはほとんど簡単になります。

h = np.array(['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'T'])
a = h.reshape((3,3)) 
于 2012-11-19T14:58:54.693 に答える
2

リスト内包表記を使用します。

In [11]: h = ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'T']

In [12]: [h[i:i+3] for i in range(0,len(h),3)]
Out[12]: [['H', 'H', 'H'], ['H', 'H', 'H'], ['H', 'H', 'T']]
于 2012-11-19T15:01:36.677 に答える