= []
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.
= []
my_empty_list print(type(my_empty_list))
<class 'list'>
= ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
symbols print(type(symbols))
print(symbols)
<class 'list'>
['MSFT', 'AAPL', 'GOOGL', 'AMZN', 'NFLX']
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:
= ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
symbols
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):
print(symbols[-1])
NFLX
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):
= ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
symbols
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']
print(symbols[2:4]) # FROM 2 (INCLUSIVE) to 4 (EXCLUSIVE)
['GOOGL', 'AMZN']
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:
= ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
symbols
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:
= ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
symbols print(symbols)
"NVDA") # MUTATING
symbols.append(print(symbols)
['MSFT', 'AAPL', 'GOOGL', 'AMZN', 'NFLX']
['MSFT', 'AAPL', 'GOOGL', 'AMZN', 'NFLX', 'NVDA']
Updating an item, by its numeric position:
= ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
symbols print(symbols)
-1] = "UPDATED" # MUTATING
symbols[print(symbols)
['MSFT', 'AAPL', 'GOOGL', 'AMZN', 'NFLX']
['MSFT', 'AAPL', 'GOOGL', 'AMZN', 'UPDATED']
Removing a given item, using the remove
method:
= ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
symbols print(symbols)
"NFLX") # MUTATING
symbols.remove(print(symbols)
['MSFT', 'AAPL', 'GOOGL', 'AMZN', 'NFLX']
['MSFT', 'AAPL', 'GOOGL', 'AMZN']
Alternatively, removing an item by its numeric position, using the del
keyword:
= ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
symbols print(symbols)
del symbols[-1] # MUTATING
print(symbols)
['MSFT', 'AAPL', 'GOOGL', 'AMZN', 'NFLX']
['MSFT', 'AAPL', 'GOOGL', 'AMZN']
Concatenating two lists together:
= ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
symbols print(symbols)
= symbols + ["SPOT", "NVDA"]
all_symbols print(all_symbols)
['MSFT', 'AAPL', 'GOOGL', 'AMZN', 'NFLX']
['MSFT', 'AAPL', 'GOOGL', 'AMZN', 'NFLX', 'SPOT', 'NVDA']
We will commonly ask how many items a list contains, using the len
function:
= ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
symbols len(symbols)
5
We can use membership operators to check if an item is present in the list:
= ["MSFT", "AAPL", "GOOGL", "AMZN", "NFLX"]
symbols
print("NFLX" in symbols)
print("NFLX" not in symbols)
True
False
We will return to work with lists in much more detail, as we study list-based data processing techniques: