2011-01-24 4 views
1

私は次のことをするために、どの方向を取るべきかについていくつかのヒントを得たいと思っています。Python 3.1 - グリッドシミュレーション

整数の1Dリストを取得してグリッドに変換する必要があります。整数はランダムに配置されます(多次元配列?)。次に、グリッド要素の1つを選択して変更すると、周囲のすべての要素も影響を受ける関数が必要になります。

ありがとうございました!

+1

あなたの質問は本当に曖昧です。 AFAIU、1次元リストを2次元リストに変換する必要がありますか? (あなたは人生のゲームを書こうとしていますか?) –

+0

はい、それは2次元です。いいえ、私は人生のゲームを理解しているように、本当にありませんか?私が望むことは、グリッド内の単一の要素を変更し、隣接する要素も変更することです。次に、今修正されたグリッドをサンプリングします。しかし、私はこれが役に立つかもしれないので、この生命のゲームのPythonの実装を探します。 – jimy

+0

これらの回答の1つが参考になった場合は、受け入れることはできません。 (誰も気にしません) – senderle

答えて

2

さて、ここで迅速な一つだ:

print 2d_list[0][4] // Output: 47 

幸運:今

1d_list = [45, 18, 77, 24, 47, 88, 61, 96, 46, 97, 16, 65, 39, 56, 14, 48, 87, 44, 91, 22, 21, 38, 59, 95, 75, 80, 20, 51, 66, 62, 50, 82, 60, 57, 10, 23, 6, 8, 28, 83, 71, 76, 36, 32, 90, 29, 40, 37] // I didn't write this ;) 

2d_list = [] 

for y in range(6): 
    holder = [] 

    for x in range(8): 
    holder.append(x) 

    2d_list.append(y) 
    2d_list[y].append(holder) 

、あなただけ2d_listあなたは、通常の座標系だろうなどを使用することができます。それが大きくなる場合は、Python Arraysを使用する必要があります。リストと辞書はスピードの問題でこれ以上切り取られません(私は混乱するかもしれません)。がPythonのC配列の実装になるはずです。右?)。

+2

代わりにnumpyを使用してください。 –

+0

C配列を使用するよりもはるかに高速ですか?私はnumpyがこれを扱うときにPythonの内部リスト構造と同じくらい遅いことを知っていました(私のテストはまったく広範ではありませんでした)。 – Blender