Python で角括弧と丸括弧で囲まれたリストの違いは何ですか? 質問する

Python で角括弧と丸括弧で囲まれたリストの違いは何ですか? 質問する
>>> x=[1,2]
>>> x[1]
2
>>> x=(1,2)
>>> x[1]
2

どちらも有効ですか? 何らかの理由でどちらかが優先されますか?

ベストアンサー1

角括弧はリストであり、丸括弧はタプルです。

リストは変更可能であり、その内容を変更することができます。

>>> x = [1,2]
>>> x.append(3)
>>> x
[1, 2, 3]

一方、タプルはそうではありません:

>>> x = (1,2)
>>> x
(1, 2)
>>> x.append(3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'

もう一つの主な違いは、タプルはハッシュ可能であることです。つまり、辞書のキーなどとして使用できます。例:

>>> x = (1,2)
>>> y = [1,2]
>>> z = {}
>>> z[x] = 3
>>> z
{(1, 2): 3}
>>> z[y] = 4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

多くの人が指摘しているように、タプルを加算できることに注意してください。例:

>>> x = (1,2)
>>> x += (3,)
>>> x
(1, 2, 3)

ただし、これはタプルが変更可能であることを意味するものではありません。上記の例では、 2 つのタプルを引数として追加することで新しいタプルが作成されます。元のタプルは変更されません。これを示すために、次のことを考慮してください。

>>> x = (1,2)
>>> y = x
>>> x += (3,)
>>> x
(1, 2, 3)
>>> y
(1, 2)

一方、同じ例をリストで構築すると、y次のように更新されます。

>>> x = [1, 2]
>>> y = x
>>> x += [3]
>>> x
[1, 2, 3]
>>> y
[1, 2, 3]

おすすめ記事