Python のリスト (list) - コピーと結合
ここでは Python のリスト (list) のコピーと結合の方法についてご説明します。
Python のリストをコピーする
Python のリストをコピーして、新しいリストを作りたい時があるかもしれません。
そんな時に = をつかって代入してしまうと、新しいリストができるのではなく、元のリストへのリファレンスをコピーしたことになり、同じリストをポイントしているので、どちらかのリストを変更すると、もう片方も変更されてしまいます。
言葉ではわかりにくいかもしれないので、実際にコードを実行して確認してみましょう。
names1 = [ "Tanaka", "Suzuki", "Sato", "Yamada"]
names2 = names1
names2[0] = "Kato"
print(names1)
print(names2)
names1[0] = "Matsumoto"
print(names1)
print(names2)
実行結果は次のようになります。names1 と names2 両方変更されて、同じになっていますね。
['Kato', 'Suzuki', 'Sato', 'Yamada']
['Kato', 'Suzuki', 'Sato', 'Yamada']
['Matsumoto', 'Suzuki', 'Sato', 'Yamada']
['Matsumoto', 'Suzuki', 'Sato', 'Yamada']
Python でリストをコピーして新しいリストを作りたい時には copy() メソッドを使います。
names1 = [ "Tanaka", "Suzuki", "Sato", "Yamada"]
names2 = names1.copy()
names2[0] = "Kato"
print(names1)
print(names2)
names1[0] = "Matsumoto"
print(names1)
print(names2)
実行結果は次のようになり、それぞれ、names2 のみ、names1 のみが変更されていますね。
['Tanaka', 'Suzuki', 'Sato', 'Yamada']
['Kato', 'Suzuki', 'Sato', 'Yamada']
['Matsumoto', 'Suzuki', 'Sato', 'Yamada']
['Kato', 'Suzuki', 'Sato', 'Yamada']
+ 演算子でリストを結合する
Python のリストを結合するには、シンプルに + 演算子でつなげることができます。
names1 = [ "Tanaka", "Suzuki", "Sato", "Yamada"]
names2 = [ "Sakai", "Kimura", "Ishida"]
names3 = names1 + names2
print(names3)
実行結果は次のようになり、names1 と names2 が結合されたリストが names3 に代入されています。
['Tanaka', 'Suzuki', 'Sato', 'Yamada', 'Sakai', 'Kimura', 'Ishida']
ちなみに、names3 は新しいリストなので、names3 を変更しても、names1 と names2 には影響はありません。
extend() メソッドでリストを結合する
extend() メソッドを使うと、そのリストの後ろに、他のリストを結合することができます。
names1 = [ "Tanaka", "Suzuki", "Sato", "Yamada"]
names2 = [ "Sakai", "Kimura", "Ishida"]
names1.extend(names2)
print(names1)
実行結果は次のようになり、names1 のうしろに names2 の要素が追加されていますね。
['Tanaka', 'Suzuki', 'Sato', 'Yamada', 'Sakai', 'Kimura', 'Ishida']
以上、Python のリスト (list) のコピーと結合の方法についてご説明しました。