LoginSignup
0
2

More than 3 years have passed since last update.

リストのリストを作成するときの注意点

Posted at

結論

リストのリストを作成するときは
[[]] * n
ではなく
[[] for _ in range(n)]
を使おう。

詳細

list_of_list = [[]] * 3
print(list_of_list)

とすると

 [[], [], []]

が表示されます。
リストのリストの初期化方法としてお手軽で良さそうですが、ダメです。
例えば

list_of_list[1].append(100)
print(list_of_list)

とすると想定は

 [[], [100], []]

ですが、実際は

 [[100], [100], [100]]

となってしまいます。
[[]] * n でリストを作ると内部のリストは中身を共有するみたいです。
Python詳しい人にとっては当たり前かもしれませんが、
遭遇した時は驚きました。

改善するには

list_of_list = [[] for _ in range(n)]

とします。
これで想定通りの動きをしてくれます。

以上です。

0
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2