Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

TypeError: can only concatenate list (not "tuple") to listとは何ですか?

こんにちは、PyQサポートです。

今回は TypeError: can only concatenate list (not "tuple") to list というエラーの意味と、その原因を解説します。

質問: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")

このように、リストとタプルは似ている点もありますが、異なるデータ型ですので混同しないよう注意しましょう。

Copyright ©2017- BeProud Inc. All rights reserved.