Fix the TypeError: Can Only Join an Iterable in Python

Fix the TypeError: Can Only Join an Iterable in Python

Strings, lists, tuples, and other similar objects are often referred to as iterables in Python. This is because they contain a finite number of elements that can be referred to using their indexes; we can loop over these objects using a simple for loop.

A handy function that works with such iterables is the join() function. This function can combine the elements of an iterable to a single string, and we can specify the separator of the elements in the string with the function.

This tutorial will discuss the TypeError: can only join an iterable error in Python.

Fix the TypeError: can only join an iterable in Python

Since it is a TypeError, we can conclude that an unsupported operation is being performed on a given object. This error is encountered when we try to combine the elements of an unsupported type of object using the join() function.

For example,

a = 456
s = ''.join(a)
print(s)

Output:

TypeError: can only join an iterable

In the above example, we tried to use the join() function with an integer and got this error.

The fix to this error is simple, only use the valid data types that are iterable.

A very simple example of the join() function with an iterable is shown below.

a = ['4','5','6']
s = ''.join(a)
print(s)

Output:

456

Remember that since the join() function returns a string, the elements of an iterable also must be a string; otherwise, a new error will be raised.

There are some cases where we get the can only join an iterable error while working with iterables.

For example,

a = ['4','5','6']
b = a.reverse()
s = ''.join(b)
print(s)

Output:

TypeError: can only join an iterable

The above example raises the error because the reverse() function reverses the order of elements in the original list. It does not create a new list.

So, in the above example, the object b value is None. That is why the error is raised.

In such cases, be mindful of the final object passed onto the join() function. We can fix the above example using the reversed() method, which returns a new list.

See the code below.

a = ['4','5','6']
b = reversed(a)
s = ''.join(b)
print(s)

Output:

654

Since the reversed() method returns a new list, the error was avoided in the above example.

Author: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Related Article - Python Error

  • Python PermissionError: [WinError 5] Access Is Denied
  • Python TypeError: 'DataFrame' Object Is Not Callable
  • Python TypeError: Can't Convert 'List' Object to STR
  • Local Variable Referenced Before Assignment Error in Python
  • Python Handling Socket.Error: [Errno 104] Connection Reset by Peer
  • Python Is Not Recognized in Windows 10