リストを定義して、次のように1つのアイテムを変更しようとすると:
list_of_lists = [['a', 'a', 'a'], ['a', 'a', 'a'], ['a', 'a', 'a']]
list_of_lists[1][1] = 'b'
for row in list_of_lists:
print row
意図したとおりに動作します。しかし、リスト内包表記を使用してリストを作成しようとすると、次のようになります。
row = ['a' for range in xrange(3)]
list_of_lists = [row for range in xrange(3)]
list_of_lists[1][1] = 'b'
for row in list_of_lists:
print row
その結果、リスト内のアイテムの列全体が変更されます。どうしてこれなの?リスト内包表記で目的の効果を達成するにはどうすればよいですか?