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) のコピーと結合の方法についてご説明しました。

© 2024 やさしい Python 入門