1. ホーム
  2. python

[解決済み] Pythonで2次元配列を初期化する方法は?

2022-03-17 17:48:07

質問

Pythonを始めたばかりで、2次元のリストを使おうとしているのですが、最初はどの場所にも同じ変数で埋め尽くされています。私はこれを思いついた。

def initialize_twodlist(foo):
    twod_list = []
    new = []
    for i in range (0, 10):
        for j in range (0, 10):
            new.append(foo)
        twod_list.append(new)
        new = []

これは望ましい結果をもたらしますが、回避策のように感じられます。もっと簡単に、もっと短く、もっとエレガントな方法はないのでしょうか?

どのように解決するのですか?

Pythonでよく出てくるパターンが

bar = []
for item in some_iterable:
    bar.append(SOME EXPRESSION)

これはリスト内包の導入の動機付けとなり、このスニペットは次のように変換されます。

bar = [SOME_EXPRESSION for item in some_iterable]

の方が短く、時には明確です。通常、これらを認識する習慣を身につけ、しばしばループを内包に置き換えることができます。

あなたのコードはこのパターンに2回従います

twod_list = []                                       \                      
for i in range (0, 10):                               \
    new = []                  \ can be replaced        } this too
    for j in range (0, 10):    } with a list          /
        new.append(foo)       / comprehension        /
    twod_list.append(new)                           /