Python 中 IndexError: pop from empty list 错误

当我们在空列表上调用 pop() 方法时,会发生 Python “IndexError: pop from empty list”。 要解决该错误,请在使用 pop() 方法之前使用 if 语句检查列表是否为真,或者检查列表的长度是否大于 0。

这是错误发生方式的示例。

my_list = []

# ⛔️ IndexError: pop from empty list
result = my_list.pop()

Python 中 IndexError: pop from empty list 错误

我们在一个导致错误的空列表上调用了 pop() 方法。

避免错误的一种方法是在使用 pop() 之前使用 if 语句来检查列表是否真实。

my_list = []

if my_list:
    result = my_list.pop()
    print(result)
else:
    print('list is empty')

如果不需要,可以删除 else 块。

在调用 pop() 方法之前,我们检查存储在 my_list 变量中的值是否为真。

所有不真实的值都被认为是虚假的。 Python 中的假值是:

  • 定义为虚假的常量:None 和 False。
  • 任何数字类型的 0(零)
  • 空序列和集合:””(空字符串)、()(空元组)、[](空列表)、{}(空字典)、set()(空集)、range(0)(空范围)。

空列表是虚假的,包含至少 1 个项目的列表是真实的。

或者,我们可以更明确地检查列表的长度。

my_list = []

if len(my_list) > 0:
    result = my_list.pop()
    print(result)
else:
    print('list is empty')

len() 函数返回对象的长度(项目数)。

函数采用的参数可以是序列(字符串、元组、列表、范围或字节)或集合(字典、集合或冻结集合)。

我们还可以使用 try/except 块来处理错误。

my_list = []

try:
    result = my_list.pop()
    print(result)
except IndexError:
    # 👇️ this runs
    print('list is empty')

如果调用列表中的 pop() 方法引发 IndexError,则运行 except 块,我们可以在其中处理错误或使用 pass 关键字忽略它。

list.pop 方法删除列表中给定位置的项目并将其返回。

my_list = ['one', 'two', 'three']

my_list.pop()

print(my_list)  # 👉️ ['one', 'two']

如果未指定索引,pop() 方法将删除并返回列表中的最后一项。


总结

当我们在空列表上调用 pop() 方法时,会发生 Python “IndexError: pop from empty list”。 要解决该错误,请在使用 pop() 方法之前使用 if 语句检查列表是否为真,或者检查列表的长度是否大于 0。