Python初学者が引っかかる落とし穴に、 seq = [[]] * 5 seq[0].append('A') print(seq) としたとき、どのような出力が出るか?というのがある。 一見、 [['A'], [], [], [], []] となりそうだが、実際には [['A'], ['A'], ['A'], ['A'], ['A']] となる。 seq = [[]] * 5 という文はちょっとごちゃごちゃして分かりにくいのでちょっと書き直してみると item = [] seq = [item] * 5 と同じだ。まず空のリストを一つ作成し、そのリストを要素とする長さ1のリストを作る。そして長さ1のリストを *5 して長さ5のリストを作成し、 seq に 代入する。Pythonスクリプトとして書き直すと: def list_mul(seq, n): ret = [] for i in r
![リストのかけ算 - atsuoishimoto's diary](https://cdn-ak-scissors.b.st-hatena.com/image/square/74f52f8230e312cf42a367c92457609b07e6b948/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fa%2Fatsuoishimoto%2F20110409%2F20110409205259.png)