I wrote my first "Hello World" 4 months ago. Since then, I have been following a Coursera Python course provided by Rice University. I recently worked on a mini-project involving tuples and lists. There is something strange about adding a tuple into a list for me:
a_list = []
a_list.append((1, 2)) # Succeed! Tuple (1, 2) is appended to a_list
a_list.append(tuple(3, 4)) # Error message: ValueError: expecting Array or iterable
It's quite confusing for me. Why specifying the tuple to be appended by using "tuple(...)" instead of simple "(...)" will cause a ValueError
?
BTW: I used CodeSkulptor
coding tool used in the course
It has nothing to do with append
. tuple(3, 4)
all by itself raises that error.
The reason is that, as the error message says, tuple
expects an iterable argument. You can make a tuple of the contents of a single object by passing that single object to tuple. You can't make a tuple of two things by passing them as separate arguments.
Just do (3, 4)
to make a tuple, as in your first example. There's no reason not to use that simple syntax for writing a tuple.
I believe tuple()
takes a list as an argument
For example,
tuple([1,2,3]) # returns (1,2,3)
see what happens if you wrap your array with brackets
Because tuple(3, 4)
is not the correct syntax to create a tuple. The correct syntax is -
tuple([3, 4])
or
(3, 4)
You can see it from here - https://docs.python.org/2/library/functions.html#tuple
There should be no difference, but your tuple method is wrong, try:
a_list.append(tuple([3, 4]))
Source: Stackoverflow.com