5

.pop()を呼び出すと、空のセットとリストで異なる例外が発生するのはなぜですか?

>>> l = []
>>> l.pop()
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    l.pop()
IndexError: pop from empty list
>>> l = set()
>>> l.pop()
Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    l.pop()
KeyError: 'pop from an empty set'
4

2 に答える 2

7

setssによく似dictていますが、値がないためです。

>>> d = {}
>>> d.pop('foo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'pop(): dictionary is empty'

リストのように辞書とセットの両方にインデックスが付けられていないため、IndexErrorここでは意味がありません。しかし、辞書のように、セット内の各「キー」の値は1つだけです。

于 2013-03-03T21:40:18.197 に答える
7

リストは順序付けられたシーケンスであり、インデックスによってアクセスされます。セットは順序付けられておらず、シーケンシャルではなく、キーによってアクセスされるため、エラーメッセージが表示されます。

于 2013-03-03T21:40:32.153 に答える