8.5. Nested Recap

8.5.1. What is an Object?

  • Basic types are objects

  • Iterable are objects too

  • Everything is an object

  • tuple.mro()

  • list.mro()

  • set.mro()

>>> tuple.mro()
[<class 'tuple'>, <class 'object'>]
>>> list.mro()
[<class 'list'>, <class 'object'>]
>>> set.mro()
[<class 'set'>, <class 'object'>]

8.5.2. Append vs. Extend

>>> from pprint import pprint
>>> data = [1, 2, 3]
>>> data.extend([4, 5, 6])
>>>
>>> data
[1, 2, 3, 4, 5, 6]
>>> data = [1, 2, 3]
>>> data.append([4, 5, 6])
>>>
>>> data
[1, 2, 3, [4, 5, 6]]

Append elements using list.append():

>>> data = [
...     ('Alice', 'Apricot'),
...     ('Bob', 'Banana'),
...     ('Carol', 'Corn'),
... ]
>>>
>>> row = ('Mallory', 'Melon')
>>> data.append(row)
>>>
>>> pprint(data, width=30)
[('Alice', 'Apricot'),
 ('Bob', 'Banana'),
 ('Carol', 'Corn'),
 ('Mallory', 'Melon')]

Append elements using list.extend():

>>> data = [
...     ('Alice', 'Apricot'),
...     ('Bob', 'Banana'),
...     ('Carol', 'Corn'),
... ]
>>>
>>> row = ('Mallory', 'Melon')
>>> data.extend(row)
>>>
>>> pprint(data, width=30)
[('Alice', 'Apricot'),
 ('Bob', 'Banana'),
 ('Carol', 'Corn'),
 'Mallory',
 'Melon']

8.5.3. Use Case - 1

  • One dimensional (1D) structure - vector

>>> data = [1, 2, 3]

Is equivalent to:

>>> obj1 = 1
>>> obj2 = 2
>>> obj3 = 3
>>>
>>> data = [obj1, obj2, obj3]

8.5.4. Use Case - 2

  • Two dimensional (2D) structure - matrix

>>> data = [
...      [1, 2, 3],
...      [4, 5, 6],
...      [7, 8, 9],
... ]

Is equivalent to:

>>> obj1 = [1, 2, 3]
>>> obj2 = [4, 5, 6]
>>> obj3 = [7, 8, 9]
>>>
>>> data = [obj1, obj2, obj3]

8.5.5. Assignments