Register Login

TypeError slice indices must be integers or none or have an __index__ method

Updated Feb 10, 2020

What is TypeError: slice indices must be integers or None or have an __index__ method?

If you have worked with lists/string in Python, you might have used the slicing technique for selecting specific elements. Using the : operator, you mention the starting index and ending index, between which are your required elements.

If the slicing is not done properly, you are bound to encounter the TypeError: slice indices must be integers or None or have an __index__ method error.

The solution to this problem is to use integers while mentioning slicing indices. Let us get into the details.

Example Using list

#Example of slicing indices type error
MyList = [12,45,13,34,23]
print(MyList)  #This will print the whole list
print(MyList[0:2] #This will print  [12,45,13]
print(MyList[0:'2']) #This will generate the TypeError

The above code will generate the following error.

TypeError: slice indices must be integers or None or have an __index__ method.

Here, line 4 of the code I.e print(MyList[0:’2’]) will throw an error because the ending index value is a string type and not integer.

TypeError slice indices must be integers or none or have an __index__ method

Example Using string

str = "Hello my name is XYZ"
print(str[0:5])   #This will print "Hello"
print(str[0:'5']) #This will Generate an error

Line 3 of the  i.e print(str[0:'5']) above code will generate a TypeError :

slice indices must be integers or None or have an __index__ method error.

This is because the ending index value of the [ ] operator is a string and not integer. And we know, slice operator throws a TypeError when we provide value other than an integer to it.


×