How to Create a Tuple in Python
Let's start with a lie: Python tuples are created using parentheses, like this:
MAGENTA = (255, 0, 255)
Wait, what??! In Python, tuples are not created with parentheses?
The truth is that tuples are created with commas AND do not require parentheses. You can create a tuple like this:
MAGENTA = 255, 0, 255 #Avoid this
But just because you can doesn't mean you should. It's a better idea to get used to including the parentheses, because sometimes you do need them.
The best way to understand why you should get in the habit of using parentheses when creating tuples is to look at some Python code:
def show_type(obj): print(type(obj)) #tuple created w/o parentheses (works but bad practice) MAGENTA = 255, 0, 255 show_type(MAGENTA) #When passing a tuple to a function, you need parentheses: show_type( (255, 0, 255) ) #Passing the tuple w/o parentheses to a function will error show_type( 255, 0, 255 )
The above code will render the following:
- On line 5, the
MAGENTAtuple is created without using parentheses.
- By passing
show_type()function, we see that
MAGENTAis indeed a tuple.
- On line 9, the tuple
(255, 0, 255)(constructed with parentheses) is passed to the
show_type()function. This works fine.
- On line 12, the tuple (well, not really)
255, 0, 255(constructed without parentheses) is passed to the
show_type()function. In this case, Python passes the values to the
show_type()function as three separate arguments. As the function only expects one argument, this results in an error:
TypeError: show_type() takes 1 positional argument but 3 were given.
Creating a Single-element Tuple
To create an empty tuple, use an empty set of parentheses:
veggies_my_son_likes = ()
To create a single-element tuple, follow the element with a comma, like this:
pitchers_with_500_wins = ('Cy Young',)
If you do not include the comma, you just get a string as illustrated below:
So, in a nutshell, tuples are created with commas, but you should wrap them in parentheses.