Skip to main content
 首页 » 编程设计

Python 3 列表切片引发索引错误

2025年05月04日9bhlsheji

我遇到了一个问题,我猜这是 Python、我的计算机/Windows 或两者中的某种错误。

到目前为止,这对我来说还不是问题,我什至不知道这不应该发生。

当从索引中切出列表时,应返回 [] 的值:

>>> l = [1, 2, 3] 
>>> l[5:] 
[] 

这确实可以在我的 Mac 和我 friend 的电脑上正常工作。

但是,当我在我的 PC(Windows 7 家庭高级版 64 位,芬兰语)上时,我得到 IndexError: list index out of range

>>> l = [1, 2, 3] 
>>> l[5:] 
Traceback (most recent call last): 
  File "<pyshell#2>", line 1, in <module> 
    l[5:] 
IndexError: list index out of range 

我有 Python 3.3.0 和 2.7.3,它在 2.7.3 上运行良好,但在 3.3.0 上出现错误。我已经尝试重新安装两个版本,没有效果。 Python 文档还说它不应该在 Python 3 上引发错误:http://docs.python.org/3/library/exceptions.html#IndexError

我可以使用简单的 if len(l) >= 2 轻松解决它,但我宁愿不使用不需要的东西。

谷歌查不到太多,想知道是否有其他人遇到同样的情况,是否有解决方案?或者我应该联系 python 开发人员吗?

请您参考如下方法:

没有。我无法在 Win7 64 位 Python 3.3.0 安装上重现此错误。在命令 shell 和 IDLE 中,我看到的行为完全符合预期。

Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:57:17) [MSC v.1600 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> l = [1, 2, 3] 
>>> l[5:] 
[] 
>>> import dis 
>>> dis.dis('l=[1,2,3];l[5:]') 
  1           0 LOAD_CONST               0 (1) 
              3 LOAD_CONST               1 (2) 
              6 LOAD_CONST               2 (3) 
              9 BUILD_LIST               3 
             12 STORE_NAME               0 (l) 
             15 LOAD_NAME                0 (l) 
             18 LOAD_CONST               3 (5) 
             21 LOAD_CONST               4 (None) 
             24 BUILD_SLICE              2 
             27 BINARY_SUBSCR 
             28 POP_TOP 
             29 LOAD_CONST               4 (None) 
             32 RETURN_VALUE 

请提供有关您可能对环境所做的任何更改的更多详细信息。