1

私はこれまで2Dまたは3Dアレイを使用したことがありませんが、迷路を作ろうとしています。私のスニペットでは、正方形はセルの各インスタンスのリストです(したがって、3x4の迷路では、正方形に12個のインスタンスがあります)次に、行に追加しようとしています。つまり、行のすべての正方形のリストです。 [0]には最初の4つの正方形のインスタンスが含まれ、row [1]は次の4つのインスタンスになります。たとえば、row [x] .append(squares [y + z])はIndexErrorをスローします。これは、row[だと思います。 x]部分ですが、それを修正するために何をすべきかわかりません。appendの代わりにextendを使ってみました。

numberOfRows = 3
numberOfColumns = 4
z = 0

for x in range(numberOfRows):
    for y in range(numberOfColumns):
        row[x].append(squares[y+z])
    z += 4
4

2 に答える 2

1

私がそれを正しく推測しているなら、あなたは欲しいです:

numberOfRows = 3
numberOfColumns = 4
z = 0

squares = range(numberOfRows * numberOfColumns)

row = [[] for _ in xrange(numberOfRows)]
for x in range(numberOfRows):
    for y in range(numberOfColumns):
        row[x].append(squares[y+z])
    z += 4

print row

つまり、row定義が欠落しているだけです。

編集:

OPのコメントを読んだ後、次の代替案を検討することは状況に価値があるようです。

row = []
for x in range(numberOfRows):
    row.append([squares[y+z] for y in range(numberOfColumns)])
    z += numberOfColumns

rowしたがって、事前にすべてのリストを作成するわけではありません。

于 2012-12-06T01:04:28.397 に答える
0

これは次のように簡略化できます。

>>> [squares[i:i+numberOfColumns] for i in range(0, len(squares), numberOfColumns)]
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
于 2012-12-06T00:51:48.147 に答える