Skip to content
  • YouTube
  • FaceBook
  • Twitter
  • Instagram

Data Analytics Ireland

Data Analytics and Video Tutorials

  • Home
  • About Us
    • Latest
    • Write for us
    • Learn more information about our website
  • Useful Links
  • Glossary
  • All Categories
  • Faq
  • Livestream
  • Toggle search form
  • How to delete a key from a Python dictionary Python
  • What is a Unique key in SQL? SQL
  • how to create charts in Tkinter Python
  • What is the r programming language R Programming
  • How do I fix TypeError: unhashable type: ‘list’ Error? Articles
  • python constructor self and __init__explained Python
  • How to Create an XML file from Excel using Python Python
  • How to group your data in Tableau data visualisation

TypeError: ‘list’ object is not an iterator

Posted on May 9, 2021June 17, 2021 By admin No Comments on TypeError: ‘list’ object is not an iterator

We have covered off many TypeErrors on this website, here we will go through which using a list with and it is not an iterator gives you errors.

In order to understand this error better, we need to first understand what is an iterator in Python?

An iterator is a Python object that has the following characteristics:

  • You can count the no of values that are contained within it.
  • It also can be iterated through, so you need to apply an iteration method to it.

How does this error occur?

Normally this error occurs when you try to iterate over a list, but you have not made the list iterable.

There are two things required to make this happen:

(A) The iter() returns an iterator object

(B) The next() method moves to the next value.

Without both the code will fail and the error you are about will occur!

In the below code we have a list:

a = ['q', 'w', 'e', 'r', 't', 'y']

with the following:

b = next(a)
b = next(a)
b = next(a)
b = next(a)
b = next(a)
b = next(a)

As can be seen in the above code we have one component for the iteration , we expect two as per the above.

As a result we get the error:

Traceback (most recent call last):
  File "list_object_is_not_an_iterator.py", line 13, in <module>
    b = next(a)
TypeError: 'list' object is not an iterator

In order to fix this ,all we need to do is apply the iterator to the list as follows:

a = iter(['q', 'w', 'e', 'r', 't', 'y']) ====> We added in the iter() here, enclosing the list within it

b = next(a)
b = next(a)
b = next(a)
b = next(a)
b = next(a)
b = next(a)
#b = next(a)


print(b)

Giving output:
y

As a result of this, we now have the two required methods that will not give this error.

What is going on within the iterator?

In the above code we have asked to print b. What the iterator is doing is going to the first value of b, in this case q and print.

But because we have a variable b on multiple lines, with the method “next()” in it, the logic is moving through each value of the list till it gets to the end.

What can be done though is , reduce the length of the returned b variables to print as follows:

a = iter(['q', 'w', 'e', 'r', 't', 'y'])
b = next(a)
print(b)
returns:
q

BUT
a = iter(['q', 'w', 'e', 'r', 't', 'y'])
b = next(a)
b = next(a)
print(b)
returns:
w

As can be seen it returns the next value in the list. You can keep adding the b variables.

What happens when you get to the end of the list?

So now we have the below, and we are returning the last value:

a = iter(['q', 'w', 'e', 'r', 't', 'y'])
b = next(a)
b = next(a)
b = next(a)
b = next(a)
b = next(a)
b = next(a)

Returns:
y

The reason for this is that we have the required no of variables with the next method, which equals the length of the list.

If we add in one more b variable:

a = iter(['q', 'w', 'e', 'r', 't', 'y'])
b = next(a)
b = next(a)
b = next(a)
b = next(a)
b = next(a)
b = next(a)
b = next(a) ===> Additional b variable

Returns: 
Traceback (most recent call last):
  File "list_object_is_not_an_iterator.py", line 19, in <module>
    b = next(a)
StopIteration

The purpose of StopIteration is to not allow a continuous loop and recognise that the end of the list has been reached.

Implementing Iterators

Iterators could be used in the following circumstances:

(A) You have a defined list of object values to work with.

(B) If sequence is important an iterator will help to process values in the order they appear in a list.

Python, Python Lists, python method, type error Tags:iter(), iterator, list, list object, next(), TypeError

Post navigation

Previous Post: How to count the no of rows and columns in a CSV file
Next Post: How to connect to your data in Tableau

Related Posts

  • TypeError: List Indices Must Be Integers Or Slices, Not Tuple exceptions
  • Python tutorial: How to create a graphical user interface in Tkinter Python
  • how to compare two lists in Python Python Lists
  • How Would You Change The Name Of a Key in a Python Dictionary Python
  • TypeError: ‘str’ object is not callable Python Functions
  • How to create a combobox in tkinter Python

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • IndexError: single positional indexer is out-of-bounds Index Error
  • How to Add Formulas to Excel using Python numpy
  • How can packages be managed in Julia? Julia programming
  • how to remove spaces from a string regular expressions
  • how to use case statements in SQL SQL
  • How to show percentage differences between files in Python CSV
  • TypeError: List Indices Must Be Integers Or Slices, Not Tuple exceptions
  • How to add a date when a record is created SQL

Copyright © 2023 Data Analytics Ireland.

Powered by PressBook Premium theme