Slice 索引必须是整数或 Nothing 或 have__ index__ method

我想用巨蟒做点什么。我想将一个列表(平台)分割成几个列表(L [ i ]) ,但是我有以下错误消息:

  File "C:\Users\adescamp\Skycraper\skycraper.py", line 20, in <module>
item = plateau[debut:fin]
TypeError: slice indices must be integers or None or have an __index__ method

有关线路是与 item = plateau[debut:fin]

from math import sqrt


plateau = [2, 3, 1, 4, 1, 4, 2, 3, 4, 1, 3, 2, 3, 2, 4, 1]


taille = sqrt(len(plateau))


# Division en lignes
L = []
i = 1
while i < taille:
fin = i * taille
debut = fin - taille
item = plateau[debut:fin]
L.append(item)
i += 1
251818 次浏览

您的 debutfin值是浮点值,而不是整数,因为 taille是浮点值。

将这些值改为整数:

item = plateau[int(debut):int(fin)]

或者,使 taille成为一个整数:

taille = int(sqrt(len(plateau)))

当您切割一个列表时,切片必须是整数。

请注意您的索引变量的类型或在切片时执行的可能操作

a = [1, 2, 3, 4]
b = a[:len(a)/2] # Will give your error because in python division ALWAYS returns float
c = a[:len(a)//2] # Correct answer

我知道这不是一个很好的回答你的问题,特别是,但它是一个更广泛的答案。