Python — Lists
A list stores a series of items in order. Items are accessed by index starting at 0. Negative indices count from the end (-1 = last item).
Defining and Accessing
bikes = ['trek', 'redline', 'giant']
first = bikes[0] # 'trek'
last = bikes[-1] # 'giant'Modifying
bikes[0] = 'cannondale'Adding Items
bikes.append('specialized') # add to end
bikes.insert(0, 'pinarello') # insert at index 0Removing Items
del bikes[-1] # delete by position (permanent)
bikes.remove('redline') # delete first match by value
popped = bikes.pop() # remove + return last item
first = bikes.pop(0) # remove + return item at index 0remove() vs del vs pop()
remove('x')finds first occurrence by value.del bikes[i]removes by position.pop()removes AND returns — use it when you need the value you’re removing.
Length
num_bikes = len(bikes)Sorting
bikes.sort() # permanent alphabetical sort
bikes.sort(reverse=True) # permanent reverse sort
print(sorted(bikes)) # temporary sort — original unchanged
bikes.reverse() # reverse current order permanentlyLooping
for bike in bikes:
print(bike)range() — Numerical Lists
range() generates a sequence. Starts at 0 by default; stops one before the end value.
for n in range(5): # 0, 1, 2, 3, 4
print(n)
for n in range(1, 6): # 1, 2, 3, 4, 5
print(n)
numbers = list(range(1, 1_000_001)) # list from 1 to 1 millionSimple Statistics
ages = [93, 99, 66, 17, 85, 1, 35, 82, 2, 77]
youngest = min(ages)
oldest = max(ages)
total = sum(ages)Slicing
A slice returns a copy of a portion of the list.
finishers = ['kai', 'abe', 'ada', 'gus', 'zoe']
first_three = finishers[:3] # ['kai', 'abe', 'ada']
middle_three = finishers[1:4] # ['abe', 'ada', 'gus']
last_three = finishers[-3:] # ['ada', 'gus', 'zoe']Copying a List
Always copy with [:]. A direct assignment (copy = original) makes both variables point to the same list.
copy_of_bikes = bikes[:] # independent copyList Comprehensions
A compact way to build a list from a loop expression.
# Loop approach
squares = []
for x in range(1, 11):
squares.append(x**2)
# Comprehension — same result, one line
squares = [x**2 for x in range(1, 11)]
# Convert names to uppercase
upper_names = [name.upper() for name in names]Tuples
A tuple is like a list but immutable — items cannot be changed after creation. Use parentheses.
dimensions = (1920, 1080)
print(dimensions[0]) # 1920
dimensions = (1200, 900) # overwriting the whole tuple variable is OK
# dimensions[0] = 999 # TypeError — can't change individual itemsStyle Conventions (PEP 8)
- 4 spaces per indent level (never tabs)
- Lines ≤ 79 characters
- Single blank lines to group related blocks visually
Cross-References
- PythonDictionaries — dict maps keys to values; list maps indices to values
- PythonControlFlow — for/while loops over lists; membership tests with
in - PythonFunctions — passing lists as arguments; slicing to protect the original
- OOPFoundations — lists are Python’s primary sequential collection
graph TD A[List] --> B["Access: bikes[0], bikes[-1]"] A --> C["Modify: append / insert / del / remove / pop"] A --> D["Sort: .sort / sorted / .reverse"] A --> E["Slice: list[start:end]"] A --> F["Copy: list[:]"] A --> G["Comprehension: [expr for x in iter]"] H["range()"] --> I[Numerical lists + for loops] J[Tuple] --> K[Immutable: parentheses not brackets]