= []
my_empty_list print(type(my_empty_list))
<class 'list'>
A list
datatype represents a numbered, ordered collection of items.
A list has square brackets ([]
) on the extremities, and comma separated items inside.
A list may contain zero or more items. A list can contain items of any datatype, but as a best practice, all items in a list should share a datatype and structure.
We access items in a list by their numeric position, called the index. In Python (and most other languages), indices are zero-based, meaning the index of the first item is zero. We use square brackets ([]
) to denote which item we would like to access:
symbols = ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
print(symbols[0])
print(symbols[1])
print(symbols[2])
print(symbols[3])
print(symbols[4])
#print(symbols[5]) #> ERROR (IndexError)
MSFT
AAPL
GOOGL
AMZN
NFLX
We can use a negative one to dynamically reference the last item in the list (regardless of how many there are):
It is possible to access a subset of the items in sequence, by denoting the numeric position of the first item (inclusive) and last item (exclusive):
symbols = ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
print(symbols[0:1]) # FROM 0 (INCLUSIVE) to 1 (EXCLUSIVE)
print(symbols[0:2]) # FROM 0 (INCLUSIVE) to 2 (EXCLUSIVE)
print(symbols[0:3]) # FROM 0 (INCLUSIVE) to 3 (EXCLUSIVE)
['MSFT']
['MSFT', 'AAPL']
['MSFT', 'AAPL', 'GOOGL']
List slicing can be confusing at first, but here’s a simple way to think about it:
Left side of the colon:
Right side of the colon:
By default if we omit one of the sides, it will include all members to the start or end of the list:
symbols = ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
print(symbols[ :2]) # FROM BEGINNING TO 2 (EXCLUSIVE)
print(symbols[2: ]) # FROM 2 (INCLUSIVE) TO THE END
['MSFT', 'AAPL']
['GOOGL', 'AMZN', 'NFLX']
Note: list slicing provides a subset of the items in sequence, however to access a subset of the items based on some condition, we will use a filter operation instead.
Here are some additional common list operations.
Many of these operations are mutating, which means they change the underlying object in-place.
Adding items, using the append
method:
Updating an item, by its numeric position:
Removing a given item, using the remove
method:
symbols = ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
print(symbols)
symbols.remove("NFLX") # MUTATING
print(symbols)
['MSFT', 'AAPL', 'GOOGL', 'AMZN', 'NFLX']
['MSFT', 'AAPL', 'GOOGL', 'AMZN']
Alternatively, removing an item by its numeric position, using the del
keyword:
Concatenating two lists together:
We will commonly ask how many items a list contains, using the len
function:
We can use membership operators to check if an item is present in the list:
We will return to work with lists in much more detail, as we study list-based data processing techniques: