2

問題が発生しました。これは、Python、コンピューター/ウィンドウ、またはその両方のバグのようなものだと思います。

これまでのところ、それは私にとって問題ではありませんでしたし、それが起こるはずがないことさえ知らなかった.

インデックスからリストをスライスする場合、次の値[]が返されます。

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

そして、これは確かに私のMacと私の友人のコンピューターで、想定どおりに機能します。

ただし、自分の PC (Windows 7 Home Premium 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開発者に連絡する必要がありますか?

4

1 に答える 1

0

いいえ。Win7 64 ビット Python 3.3.0 インストールでは、このエラーを再現できません。コマンド シェルと 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

環境に加えた可能性のある変更について、詳細をお知らせください。

于 2013-01-20T13:09:29.243 に答える