I’m trying to convert a list to a tuple.
Most solutions on Google offer the following code:
l = [4,5,6] tuple(l)
However, the code results in an error message when I run it:
TypeError: ‘tuple’ object is not callable
How can I fix this problem?
It should work fine. Don’t use
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 : l = [4,5,6] In : tuple Out: <type 'tuple'> In : tuple(l) Out: (4, 5, 6)
However, if you’ve redefined
tuple to be a tuple rather than the
In : tuple = tuple(l) In : tuple Out: (4, 5, 6)
then you get a TypeError since the tuple itself is not callable:
In : 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 : del tuple In : tuple Out: <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
It is no more a
type and hence, it is no more
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…
I find many answers up to date and properly answered but will add something new to stack of answers.
In python there are infinite ways to do this,
here are some instances
>>> l= [1,2,"stackoverflow","python"] >>> l [1, 2, 'stackoverflow', 'python'] >>> tup = tuple(l) >>> type(tup) <type 'tuple'> >>> tup (1, 2, 'stackoverflow', 'python')
>>>tuple(item for item in l) (1, 2, 'stackoverflow', 'python')
Remember tuple is immutable ,used for storing something valuable.
For example password,key or hashes are stored in tuples or dictionaries.
If knife is needed why to use sword to cut apples.
Use it wisely, it will also make your program efficient.
To add another alternative to
tuple(l), as of Python >=
3.5 you can do:
t = *l, # or t = (*l,)
short, a bit faster but probably suffers from readability.
This essentially unpacks the list
l inside a tuple literal which is created due to the presence of the single comma
P.s: The error you are receiving is due to masking of the name
tuple i.e you assigned to the name tuple somewhere e.g
tuple = (1, 2, 3).
del tuple you should be good to go.
l1 =  #Empty list is given l1 = tuple(l1) #Through the type casting method we can convert list into tuple print(type(l1)) #Now this show class of tuple
L is a list and we want to convert it to a tuple.
L = [1, 2, 3]
By invoking tuple, you convert the list (L) into a tuple. As done above.
>> (1, 2, 3)
you can go ahead and access any item in the tuple using the square brackets.