Pythonでリストに別のリストを追加する際によく使用される`extend()`メソッドについて、基本的な使い方から実践的な例まで詳しく解説します。

`extend()`メソッドは、既存のリストに別のリストの要素を追加するための便利な方法を提供します。

基本的な使い方

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)  # 出力: [1, 2, 3, 4, 5, 6]

extend()とappend()の違い

`extend()`と`append()`は異なる動作をします:

# extend()の場合
list1 = [1, 2, 3]
list2 = [4, 5]
list1.extend(list2)
print(list1)  # 出力: [1, 2, 3, 4, 5]

# append()の場合
list1 = [1, 2, 3]
list2 = [4, 5]
list1.append(list2)
print(list1)  # 出力: [1, 2, 3, [4, 5]]

extend()の主な特徴

1. 元のリストを直接変更します(破壊的操作)

2. 任意のイテラブル(リスト、タプル、文字列など)を引数として受け取れます

3. 新しいリストを作成せず、メモリ効率が良い

実践的な使用例

複数のリストを結合

numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
symbols = ['!', '@', '#']

numbers.extend(letters)
numbers.extend(symbols)
print(numbers)  # 出力: [1, 2, 3, 'a', 'b', 'c', '!', '@', '#']

文字列の文字を追加

list1 = [1, 2, 3]
text = "Python"
list1.extend(text)
print(list1)  # 出力: [1, 2, 3, 'P', 'y', 't', 'h', 'o', 'n']

タプルの要素を追加

list1 = [1, 2, 3]
tuple1 = (4, 5, 6)
list1.extend(tuple1)
print(list1)  # 出力: [1, 2, 3, 4, 5, 6]

パフォーマンスの考慮事項

`extend()`は大量のデータを扱う際に効率的です:

# 良い例(extend()を使用)
large_list = []
for i in range(3):
    large_list.extend([i] * 1000)

# 非効率な例(+演算子を使用)
large_list = []
for i in range(3):
    large_list = large_list + ([i] * 1000)

よくある間違いと解決方法

# 間違った使用法
list1 = [1, 2, 3]
list1.extend(4)  # TypeError: 'int' object is not iterable

# 正しい使用法
list1 = [1, 2, 3]
list1.extend([4])  # 単一の要素を追加する場合は、リストにして渡す

まとめ

  • `extend()`は既存のリストに別のイテラブルの要素を追加する効率的な方法です
  • リスト、タプル、文字列など、様々なイテラブルに対応しています
  • 大量のデータを扱う際は`extend()`の使用が推奨されます
  • 単一の値を追加する場合は`append()`を使用することをお勧めします

以上の知識を活用することで、Pythonでのリスト操作をより効率的に行うことができます。