Convert list to tuple in Python Convert list to tuple in Python python python

Convert list to tuple in Python


It should work fine. Don't use tuple, list or other special names as a variable name. It's probably what's causing your problem.

>>> l = [4,5,6]>>> tuple(l)(4, 5, 6)>>> tuple = 'whoops'   # Don't do this>>> tuple(l)TypeError: 'tuple' object is not callable


Expanding on eumiro's comment, normally tuple(l) will convert a list l into a tuple:

In [1]: l = [4,5,6]In [2]: tupleOut[2]: <type 'tuple'>In [3]: tuple(l)Out[3]: (4, 5, 6)

However, if you've redefined tuple to be a tuple rather than the type tuple:

In [4]: tuple = tuple(l)In [5]: tupleOut[5]: (4, 5, 6)

then you get a TypeError since the tuple itself is not callable:

In [6]: tuple(l)TypeError: 'tuple' object is not callable

You can recover the original definition for tuple by quitting and restarting your interpreter, or (thanks to @glglgl):

In [6]: del tupleIn [7]: tupleOut[7]: <type 'tuple'>


You might have done something like this:

>>> tuple = 45, 34  # You used `tuple` as a variable here>>> tuple(45, 34)>>> l = [4, 5, 6]>>> tuple(l)   # Will try to invoke the variable `tuple` rather than tuple type.Traceback (most recent call last):  File "<pyshell#10>", line 1, in <module>    tuple(l)TypeError: 'tuple' object is not callable>>>>>> del tuple  # You can delete the object tuple created earlier to make it work>>> tuple(l)(4, 5, 6)

Here's the problem... Since you have used a tuple variable to hold a tuple (45, 34) earlier... So, now tuple is an object of type tuple now...

It is no more a type and hence, it is no more Callable.

Never use any built-in types as your variable name... You do have any other name to use. Use any arbitrary name for your variable instead...