Bài 23. Dữ liệu kiểu list
List là một trong những kiểu dữ liệu được sử dụng thường xuyên nhất và rất linh hoạt trong Python.

Khởi tạo list

1
# list rỗng
2
my_list = []
3
4
# list số nguyên
5
my_list = [1, 2, 3]
6
7
# list hỗn hợp
8
my_list = [1, "Hello", 3.4]
9
10
# list lồng nhau
11
my_list = ["mouse", [8, 4, 6], ['a']]
Copied!

Truy cập phần tử list

1
my_list = ['H', 'ọ', 'c', ' ', 'P', 'y', 't', 'h', 'o', 'n']
2
3
print(my_list[0]) # Output: H
4
print(my_list[2]) # Output: c
5
print(my_list[4]) # Output: p
6
7
n_list = ["Happy", [2, 0, 1, 5]] # list lồng nhau
8
9
print(n_list[0][1]) # Output: a
10
print(n_list[1][3]) # Output: 5
Copied!
Lưu ý: chỉ số để truy xuất phần tử list phải là số nguyên

Truy cập phần tử list theo chỉ số âm

1
my_list = ['H', 'ọ', 'c', ' ', 'P', 'y', 't', 'h', 'o', 'n']
2
3
print(my_list[-1]) # Output: n
4
print(my_list[-5]) # Output: y
Copied!

Cắt đoạn list

1
my_list = ['H', 'ọ', 'c', ' ', 'P', 'y', 't', 'h', 'o', 'n']
2
3
print(my_list[2:5]) # ['c', ' ', 'P']
4
print(my_list[:-5]) # ['H', 'ọ', 'c', ' ', 'P']
5
print(my_list[5:]) # ['y', 't', 'h', 'o', 'n']
6
print(my_list[:]) # ['H', 'ọ', 'c', ' ', 'P', 'y', 't', 'h', 'o', 'n']
Copied!
Lưu ý: tham số cắt đoạn [a:b] được lấy từ phần tử có chỉ số a đến phần tử trước chỉ số b.

Thêm, sửa phần tử list

Thay đổi giá trị phần tử

1
a = [2, 4, 6, 8]
2
3
# đổi giá trị phần tử a[0]
4
a[0] = 1
5
print(a) # [1, 4, 6, 8]
6
7
# đổi giá trị phần tử a[1] đến a[3]
8
a[1:4] = [3, 5, 7]
9
print(a) # [1, 3, 5, 7]
Copied!

Thêm phần tử vào list

Dùng append() và extend()
1
ma = [0, 9, 1, 8, 9, 1, 8]
2
3
ma.append(4)
4
print(ma) # [0, 9, 1, 8, 9, 1, 8, 4]
5
6
ma.extend([4, 7])
7
print(ma) # [0, 9, 1, 8, 9, 1, 8, 4, 4, 7]
Copied!
Dùng toán tử +, *
1
ma = [0, 9, 1, 8, 9, 1, 8]
2
3
ma += [4,4,7]
4
print(ma) # [0, 9, 1, 8, 9, 1, 8, 4, 4, 7]
5
6
mb = 'Happy! '
7
print(mb * 5) # Happy! Happy! Happy! Happy! Happy!
Copied!
Dùng phương thức insert()
1
ma = [1, 9]
2
3
ma.insert(1,3)
4
print(ma) # [1, 3, 9]
5
6
ma[2:2] = [5, 7]
7
print(ma) # [1, 3, 5, 7, 9]
Copied!

Xóa phần tử list

1
ma = ['P', 'y', 't', 'h', 'o', 'n', '3']
2
3
del ma[2] # delete one item
4
print(ma) # ['P', 'y', 'h', 'o', 'n', '3']
5
6
del ma[1:5] # delete multiple items
7
print(ma) # ['P', '3']
8
9
del ma # delete entire list
10
# Nếu print(ma) sẽ cho lỗi: List not defined
Copied!
Ta có thể sử dụng các phương thức remove(), pop(), clear() để xóa phần tử list.
1
ma = ['P', 'y', 't', 'h', 'o', 'n', '3']
2
3
ma.remove('y')
4
print(ma) # Output: ['P', 't', 'h', 'o', 'n', '3']
5
print(ma.pop(1)) # Output: 't'
6
print(ma) # Output: ['P', 'h', 'o', 'n', '3']
7
print(ma.pop()) # Output: '3'
8
print(ma) # Output: ['P', 'h', 'o', 'n']
9
10
ma.clear()
11
print(ma) # Output: []
Copied!
Hoặc ta có thể xóa phần tử list bằng cách gán list rỗng cho phần tử muốn xóa
1
ma = ['P', 'y', 't', 'h', 'o', 'n', '3']
2
3
ma[2:4] = []
4
print(ma) # ['P', 'y', 'o', 'n', '3']
Copied!

Phương thức (list method)

Phương thức trong Python được gọi bởi dấu chấm và tên phương thức sau tên biến. Có dạng list.method(). Các phương thức xử lý list gồm:
append() - thêm phần tử extend() - nối list insert() - chèn phần tử theo chỉ số remove() - xóa một phần tử list pop() - Xóa và trả về chỉ số phần tử vừa xóa clear() - Xóa hết các phần tử của list -> trả về list rỗng index() - Trả về chỉ số của phần tử đầu tiên có giá trị như tham số count() - Đếm số phần tử có giá trị như tham số sort() - Sắp xếp thành list tăng dần reverse() - Đảo chiều phần tử list copy() - Sao chép list
Ví dụ:
1
ma = [9, 1, 8, 9, 1, 8, 4]
2
3
print(ma.index(9)) # Output: 0
4
print(ma.count(8)) # Output: 2
5
6
ma.sort()
7
print(ma) # Output: [1, 1, 4, 8, 8, 9, 9]
8
9
ma.reverse()
10
print(ma) # Output: [9, 9, 8, 8, 4, 1, 1]
Copied!

List Comprehension

Chưa biết nên dịch thuật ngữ list comprehension là gì nhưng đây là một cách ngắn gọn và riêng có của Python để tạo một list từ list đã có. Xét một vài ví dụ để xem cách hoạt động của list comprehension dưới đây:
1
pow2 = [2 ** x for x in range(10)]
2
print(pow2) # [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
3
4
pow2 = [2 ** x for x in range(10) if x > 5]
5
print(pow2) # [64, 128, 256, 512]
6
7
odd = [x for x in range(20) if x % 2 == 1]
8
print(odd) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
9
10
a = [x+y for x in ['Python ','C '] for y in ['Language','Programming']]
11
print(a) # ['Python Language', 'Python Programming', 'C Language', 'C Programming']
Copied!

Thao tác khác

Kiểm tra phần tử chứa trong list

1
ma = ['P', 'y', 't', 'h', 'o', 'n', '3']
2
3
print('h' in ma) # Output: True
4
5
print('a' in ma) # Output: False
6
7
print('c' not in ma) # Output: True
Copied!

Lặp theo phần tử list

1
mau = ['xanh','đỏ', 'vàng']
2
3
for x in ['apple','banana','mango']:
4
print("I like",x)
5
6
for i in mau:
7
print('Tôi thích màu', i)
Copied!
Output: I like apple I like banana I like mango Tôi thích màu xanh Tôi thích màu đỏ Tôi thích màu vàng

Thao tác tạo list bổ sung

Tạo list đơn có n phần tử
1
n = 5
2
ma = [None]*n
3
print(ma)
Copied!
Output: [None, None, None, None, None]
Tạo nested list dạng mảng 2 chiều có c cột và d dòng
1
c = 5
2
d = 3
3
ma = [[None for x in range(c)] for x in range(d)]
Copied!
Output: [[None, None, None, None, None], [None, None, None, None, None], [None, None, None, None, None]]