A list is an ordered collection of elements that can contain items of any type, regardless of their relationship to eachother. Lists typically contain multiple items, so naming them descriptively is good practice.
Example:
bicycle_brands = ['trek', 'cannondale', 'redline', 'specialized']
Accessing List Elements
Since lists are ordered collections, you can access any element by providing its index to Python. To access an element, specify the list name followed by the element's index in square brackets.
Example:
bicycle_brands = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycle_brands[0])
Output: trek
Note: In Python, the first element in a list has index 0, not 1, which is consistent with most programming languages. Python provides special syntax for accessing the last element of a list by using index -1. Similarly, index -2 accesses the second-to-last element. You can use individual list elements just like any other variable.
Modifying List Elements
To modify a list element, specify the list name and the index of the element you want to change, then assign a new value to it.
Example:
students = ['john', 'jane', 'mike']
print(students[1])
students[1] = 'sarah'
print(students[1])
Output: jane, then sarah
Adding Elements to Lists
Appending to the End
The append() method adds an element to the end of a list.
Example:
students = ['john', 'jane']
students.append('mike')
print(students)
Output: ['john', 'jane', 'mike']
Note: The append() method makes it easy to build lists dynamically. For instance, you can start with an empty list and then use multiple append() calls to add elements.
Inserting Elements
The insert() method adds a new element at any position in the list. You need to specify both the index and the value.
Example:
students = ['john', 'jane', 'mike']
print(students)
students.insert(0, 'alex')
print(students)
Output: ['john', 'jane', 'mike'], then ['alex', 'john', 'jane', 'mike']
Note: students.insert(0, 'alex') means insert 'alex' at index position 0 in the list.
Removing Elements from Lists
Using the del Statement
If you know the position of the element you want to remove, you can use the del statement.
Example:
students = ['john', 'jane', 'mike']
print(students)
del students[0]
print(students)
Output: ['john', 'jane', 'mike'], then ['jane', 'mike']
Note: del can remove elements from any position in the list, as long as you know the index.
Using the pop() Method
The pop() method removes and returns an element from any position. If no index is provided, it removes and returns the last element.
Example:
students = ['john', 'jane', 'mike', 'sarah']
removed_student = students.pop()
print(removed_student)
print(students)
Output: sarah, then ['john', 'jane', 'mike']
Note: pop() can remove elements from any position. If no index is specified, it defaults to removing the last element. The popped element can be captured and used by assigning it to a variable.
When to use del vs. pop(): If you need to remove an element and won't use it further, use del. If you need to use the element after removing it, use pop().
Removing Elements by Value
If you don't know the position of the element but know its value, you can use the remove() method.
Example:
students = ['john', 'jane', 'mike', 'sarah']
students.remove('jane')
print(students)
Output: ['john', 'mike', 'sarah']
Note: remove() only removes the first occurrence of the specified value. If there are multiple occurrences, you'll need to use a loop to ensure all values are removed.
Sorting Lists Permanently with sort()
The sort() method permanently sorts a list in ascending order.
Example:
words = ['dog', 'cat', 'apple', 'bear']
words.sort()
print(words)
Output: ['apple', 'bear', 'cat', 'dog']
Note: sort(reverse=True) sorts the list in descending order.
Sorting Lists Temporarily with sorted()
The sorted() function returns a new sorted list without modifying the original list.
Example:
words = ['dog', 'cat', 'apple', 'bear']
print(sorted(words))
print(words)
Output: ['apple', 'bear', 'cat', 'dog'], then ['dog', 'cat', 'apple', 'bear']
Reversing a List
The reverse() method reverses the order of elements in a list permanently. To restore the original order, simply call reverse() again.
Example:
students = ['john', 'jane', 'mike', 'sarah']
students.reverse()
print(students)
students.reverse()
print(students)
Output: ['sarah', 'mike', 'jane', 'john'], then ['john', 'jane', 'mike', 'sarah']
Determining List Length
The len() function returns the number of items in a list.
Example:
students = ['john', 'jane', 'mike', 'sarah']
print(len(students))
Output: 4
Iterating Through a List
You can use a for loop to iterate through each element in a list.
Example:
students = ['john', 'jane', 'mike', 'sarah']
for student in students:
print(student)
Output: john, jane, mike, sarah (each on a new line)
Note: The for loop syntax is: for variable in list_name:. The statements within the loop must be indented after the for statement. Don't forget the colon after the for statement.
Creating Numeric Lists
The range() function generates a sequence of numbers. range(2, 6) generates numbers starting at 2, with a default step of 1, stopping before 6. range(2, 6, 2) generates numbers starting at 2, with a step of 2, stopping before 6.
Example:
for number in range(2, 6):
print(number)
Output: 2, 3, 4, 5
Using range() to create a numeric list:
Example:
numbers = list(range(1, 6))
print(numbers)
Output: [1, 2, 3, 4, 5]
Statistical Operations on Numeric Lists
Python provides built-in functions for common statistical operations on numeric lists:
min(list): Returns the smallest item in a listmax(list): Returns the largest item in a listsum(list): Returns the sum of all items in a list
List Slicing
To create a list slice, specify the index of the first element and the index of the last element you want to include. Like the range() function, Python stops before the second index.
Example:
numbers = [1, 2, 3, 4, 5, 6]
print(numbers[1:5])
Output: [2, 3, 4, 5]
Note: Separate the start and end indices with a colon in the slice.
Iterating Through Slices
You can use a for loop to iterate through a slice of a list.
Example:
students = ['john', 'jane', 'mike', 'sarah']
for student in students[:3]:
print(student)
Output: john, jane, mike
Copying Lists
You can create a copy of a list by creating a slice that includes all elements.
Example:
students = ['john', 'jane', 'mike', 'sarah']
students_copy = students[:]
print(students)
print(students_copy)
Output: ['john', 'jane', 'mike', 'sarah'], ['john', 'jane', 'mike', 'sarah']