DEV Community

Srinivas for ItsMyCode

Posted on • Originally published at itsmycode.com on

TypeError: list indices must be integers or slices, not tuple

ItsMyCode |

If you are accessing the list elements in Python, you need to access it using its index position. If you specify a tuple or a list as an index, Python will throw typeerror: list indices must be integers or slices, not tuple.

This article will look at what this error means and how to resolve the typeerror in your code.

TypeError: list indices must be integers or slices, not tuple

*Example 1 – *

Let’s consider the below example to reproduce the error.

# Python Accessing List
numbers=[1,2,3,4]
print(numbers[0,3])

Enter fullscreen mode Exit fullscreen mode

Output

Traceback (most recent call last):
  File "c:\Projects\Tryouts\main.py", line 3, in <module>
    print(numbers[0,3])
TypeError: list indices must be integers or slices, not tuple
Enter fullscreen mode Exit fullscreen mode

In the above example, we are passing the [0,3] as the index value to access the list element. Python interpreter will get confused with the comma in between as it treats as a tuple and throws typeerror: list indices must be integers or slices, not tuple.

*Solution *

We cannot specify a tuple value to access the item from a list because the tuple doesn’t correspond to an index value in the list. To access a list, you need to use a proper index, and instead of comma use colon : as shown below.

# Python Accessing List
numbers=[1,2,3,4]
print(numbers[0:3])

Enter fullscreen mode Exit fullscreen mode

Output

[1, 2, 3]
Enter fullscreen mode Exit fullscreen mode

*Example 2 – *

Another common issue which developers make is while creating the list inside a list. If you look at the above code, there is no comma between the expressions for the items in the outer list, and the Python interpreter throws a TypeError here.

coin_args = [
  ["pennies", '2.5', '50.0', '.01']
  ["nickles", '5.0', '40.0', '.05']
]

print(coin_args[1])
Enter fullscreen mode Exit fullscreen mode

Output

c:\Projects\Tryouts\main.py:2: SyntaxWarning: list indices must be integers or slices, not tuple; perhaps you missed a comma?
  ["pennies", '2.5', '50.0', '.01'] 
Traceback (most recent call last):
  File "c:\Projects\Tryouts\main.py", line 2, in <module>
    ["pennies", '2.5', '50.0', '.01']
TypeError: list indices must be integers or slices, not tuple
Enter fullscreen mode Exit fullscreen mode

Solution

The problem again is that we have forgotten to add the comma between our list elements. To solve this problem, we must separate the lists in our list of lists using a comma, as shown below.

coin_args = [
  ["pennies", '2.5', '50.0', '.01'] ,
  ["nickles", '5.0', '40.0', '.05']
]

print(coin_args[1])
Enter fullscreen mode Exit fullscreen mode

Output

['nickles', '5.0', '40.0', '.05']
Enter fullscreen mode Exit fullscreen mode

The post TypeError: list indices must be integers or slices, not tuple appeared first on ItsMyCode.

Discussion (0)