1. ホーム
  2. python

[解決済み】範囲外のポップインデックス【重複あり

2022-01-30 18:33:10

質問内容

N=8
f,g=4,7
indexList = range(N)
print indexList
print f, g
indexList.pop(f)
indexList.pop(g)

このコードでは、ポップインデックスが gindexList は範囲外です。 以下はその出力です。

[0, 1, 2, 3, 4, 5, 6, 7]
4 7
Traceback (most recent call last):
indexList.pop(g)
IndexError: pop index out of range

理解できない g は7という値を持ち、リストには7つの値が含まれていますが、なぜリストの7を返すことができないのでしょうか?

どうすればいいですか?

pop'edされたリストの最終値を得るには、このようにします。

>>> l=range(8)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7]
>>> l.pop(4)                    # item at index 4
4
>>> l
[0, 1, 2, 3, 5, 6, 7]
>>> l.pop(-1)                   # item at end - equivalent to pop()
7
>>> l
[0, 1, 2, 3, 5, 6]
>>> l.pop(-2)                   # one left of the end 
5
>>> l
[0, 1, 2, 3, 6]
>>> l.pop()                     # always the end item
6
>>> l
[0, 1, 2, 3]

を覚えておいてください。 ポップ はアイテムを削除し、リストはポップの後に長さを変えます。サイズが変化する可能性のあるリストの最後からインデックスを作成するために負の数を使用するか、最後のアイテムに対して引数なしで単に pop() を使用します。

ポップはこのようなエラーを発生させることがあるため、しばしば 例外ブロック :

>>> l=[]
>>> try:
...    i=l.pop(5)
... except IndexError:
...    print "sorry -- can't pop that"
... 
sorry -- can't pop that