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

时间:2013-01-20 13:06:43

标签: python python-3.x indexing

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

到目前为止,这对我来说并不是一个问题,我甚至不知道它不会发生。

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

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

这确实可以在我的Mac和我朋友的计算机上运行。

然而,当我在我的电脑上(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开发人员?

1 个答案:

答案 0 :(得分:0)

没有。我无法在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

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