こんにちは、PyQサポートです。
今回は TypeError: can only concatenate list (not "tuple") to list
というエラーの意味と、その原因を解説します。
- 質問:TypeError: can only concatenate list (not "tuple") to listの原因は?
- 回答:リストとタプルを結合したために発生したエラーです。
- Python文法解説:リストとタプルの違い
質問:TypeError: can only concatenate list (not "tuple") to listの原因は?
TypeError: can only concatenate list (not "tuple") to list
というエラーが出ました。このエラーの原因を教えてください。
入力した内容(コード)
group_a = ["ken", "kumiko"] group_b = ("hanako", "taro") print(group_a + group_b)
出たエラー(実行結果)
Python 3.10 で実行した結果
Traceback (most recent call last): File "/Users/pyq-user/1.py", line 4, in <module> print(group_a + group_b) TypeError: can only concatenate list (not "tuple") to list
回答:リストとタプルを結合したために発生したエラーです。
リスト同士、もしくはタプル同士は+
で結合できますが、リストとタプルは+
で結合できません。
そのため、以下のどちらかのコードであれば問題ありません。
リスト同士を+
で結合する
# 両方ともリスト group_a = ["ken", "kumiko"] group_b = ["hanako", "taro"] print(group_a + group_b)
実行結果
['ken', 'kumiko', 'hanako', 'taro']
タプル同士を+
で結合する
# 両方ともタプル group_a = ("ken", "kumiko") group_b = ("hanako", "taro") print(group_a + group_b)
実行結果
('ken', 'kumiko', 'hanako', 'taro')
もしくは、結合時に型変換して、型をそろえるという方法もあります。
タプルをリストに型変換して結合する
group_a = ["ken", "kumiko"] group_b = ("hanako", "taro") # group_b をリスト型に変換 print(group_a + list(group_b))
実行結果
['ken', 'kumiko', 'hanako', 'taro']
Python文法解説:リストとタプルの違い
リストとタプルの違いについて、簡単に解説しておきます。
リストはカンマ区切りのデータを[]
で囲んで作成し、各要素は順番を持ちます。
group_a = ["ken", "kumiko"] print(group_a[0]) # ken が表示される print(group_a[1]) # kumiko が表示される
一方、タプルはカンマ区切りのデータを()
を囲んで作成し、こちらも各要素は順番を持ちます。
group_b = ("hanako", "taro") print(group_b[0]) # hanako が表示される print(group_b[1]) # taro が表示される
どちらも複数のデータを順番にまとめられるという点では似ています。
しかし、リストは後から要素の追加・変更・削除が可能なのに対し、タプルは後から変更できないという違いがあります。
group_a = ["ken", "kumiko"] # リストは後から要素を追加できる(タプルはできない) group_a.append("takashi")
このように、リストとタプルは似ている点もありますが、異なるデータ型ですので混同しないよう注意しましょう。