Tuesday, April 27, 2021

What are tuples?


- Tuples are another type of sequence in Python
- they are immutable
- they can be packed
- they can be unpacked to variables
- they can contain mutable objects
- lightweight compared to lists

Demo on how to use tuples


        >>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> # Tuples may be nested:
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
>>> # Tuples are immutable:
... t[0] = 88888
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> # but they can contain mutable objects:
... v = ([1, 2, 3], [3, 2, 1])
>>> v
([1, 2, 3], [3, 2, 1])

Ways on defining an empty tuple and a tuple with only 1 element


        >>> empty = ()
>>> singleton = 'hello',    # <-- note trailing comma
>>> len(empty)
0
>>> len(singleton)
1
>>> singleton
('hello',)

Packing and unpacking a tuple


        >>> t = 23, 'grapes', 'linux'  # packing a tuple
>>> t
(23, 'grapes', 'linux')
>>>
>>> number, fruit, os = t  # unpacking a tuple
>>> number
23
>>> fruit
'grapes'
>>> os
'linux'
>>>
>>> number, fruit, os, car = t      # number of variables on the left side must match
Traceback (most recent call last):  # the number of elements on the right tuple
  File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 4, got 3)
>>>

Tuples can be converted to list and vice-versa


        >>> secret_message = "hello world"
>>> list(secret_message)
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
>>> tuple(secret_message)
('h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd')
>>> list(tuple(list(secret_message)))
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
>>> ''.join(list(tuple(list(secret_message))))
'hello world'

You can also do comparison between tuples


        >>> t1
(1, 5, 7.6)
>>> t2
(2, 8, 100)
>>>
>>> t1 < t2
True
>>>
>>> t1 > t2
False

You cannot delete a specific element in a tuple but you can delete all of them at once


        >>> num = 600, 1, 5, 45.6
>>> num
(600, 1, 5, 45.6)
>>> del num[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
>>> del num
>>> num
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'num' is not defined
>>>

Other operations that can be done on tuples


        >>> len((1, 2, 3))  # length
3
>>> (1, 2, 3) + (4, 5, 6)  # addtion (concatenation)
(1, 2, 3, 4, 5, 6)
>>> ('Hi!',) * 4  # repetition
('Hi!', 'Hi!', 'Hi!', 'Hi!')
>>> 3 in (1, 2, 3)  # membership
True
>>> for x in (1,2,3) : print (x, end = ' ')  # iteration
...
1 2 3 >>>
>>>

Since tuples are also sequences, you can do slice and index operations against them


        >>> T=('C++', 'Java', 'Python')
>>> T[2]
'Python'
>>> T[-2]
'Java'
>>> T[1:]
('Java', 'Python')
>>>

Other tuple functions


        cmp(tuple1, tuple2)
len(tuple)
max(tuple)
min(tuple)
tuple(seq)

No comments:

Post a Comment