Danh sách là một tính năng hữu ích và được sử dụng thường xuyên trong Python.
Và khả năng hiểu danh sách cung cấp cho bạn một cách để tạo danh sách trong khi viết mã thanh lịch hơn, dễ đọc.
Trong bài viết thân thiện với người mới bắt đầu này, tôi sẽ cung cấp tổng quan về cách hoạt động của tính năng hiểu danh sách trong Python. Tôi cũng sẽ hiển thị nhiều ví dụ về mã trong quá trình thực hiện.
Bắt đầu nào!
Làm thế nào để sử dụng một for
vòng lặp để tạo danh sách trong Python
Một cách để tạo danh sách trong Python là sử dụng for
vòng.
Ví dụ, bạn có thể sử dụng range()
chức năng tạo danh sách các số từ 0 – 4.
#first create an empty list
my_list = []
#iterate over the numbers 0 - 4 using the range() function
#range(5) creates an iterable, starting from 0 up to (but not including) 5
#Use the .append() method to add the numbers 0 - 4 to my_list
for num in range(5):
my_list.append(num)
#print my_list
print(my_list)
#output
#[0, 1, 2, 3, 4]
Điều gì sẽ xảy ra nếu bạn đã có một danh sách các số nhưng muốn tạo một danh sách mới với các ô vuông của chúng?
Bạn lại có thể sử dụng một for
vòng lặp, như vậy:
#initial list of numbers
numbers = [1,2,3,4,5,6]
#create a new,empty list to hold their squares
square_numbers = []
#iterate over initial list
#multiply each number by itself
#use .append() method, to add the square to the new list, square_numbers
for num in numbers:
square_numbers.append(num * num)
#print new list
print(square_numbers)
#output
#[1, 4, 9, 16, 25, 36]
Nhưng có một cách nhanh hơn và ngắn gọn hơn để đạt được kết quả tương tự – bằng cách sử dụng khả năng hiểu danh sách.
Hiểu danh sách trong Python là gì? Tổng quan về cú pháp
Khi bạn đang phân tích và làm việc với các danh sách trong Python, bạn sẽ thường xuyên phải thao tác, sửa đổi hoặc thực hiện các phép tính trên từng mục trong danh sách, tất cả cùng một lúc.
Bạn cũng có thể cần tạo danh sách mới từ đầu hoặc tạo danh sách mới dựa trên các giá trị của danh sách đã tồn tại.
Hiểu danh sách là một cách nhanh chóng, ngắn gọn và thanh lịch để tạo danh sách so với các phương pháp lặp khác, như for
vòng lặp.
Cú pháp chung để hiểu danh sách trông như thế này:
new_list = [expression for variable in iterable]
Hãy chia nhỏ nó ra:
- Việc hiểu danh sách bắt đầu và kết thúc bằng cách mở và đóng dấu ngoặc vuông,
[]
. - Sau đó đến
expression
hoặc thao tác bạn muốn thực hiện và thực hiện trên từng giá trị bên trong lần lặp hiện tại. Kết quả của những tính toán này nhập vào danh sách mới. - Các
expression
được theo sau bởi mộtfor
khoản. variable
là tên tạm thời mà bạn muốn sử dụng cho từng mục trong danh sách hiện tại đang trải qua quá trình lặp lại.- Các
in
từ khóa được sử dụng để lặp qua lần lặp. iterable
có thể là bất kỳ đối tượng Python nào, chẳng hạn như danh sách, bộ dữ liệu, chuỗi, v.v.- Từ phép lặp đã được thực hiện và các phép tính diễn ra trên từng mục trong quá trình lặp, các giá trị mới được tạo được lưu vào một biến, trong trường hợp này
new_list
. Danh sách cũ (hoặc đối tượng khác) sẽ không thay đổi. - Có thể có một tùy chọn
if
tuyên bố và bổ sungfor
khoản.
Cách sử dụng khả năng hiểu danh sách trong Python
Sử dụng cùng một ví dụ từ trước đó, đây là cách bạn tạo một danh sách mới các số từ 0 – 4 với range()
chức năng chỉ trong một dòng duy nhất, sử dụng khả năng hiểu danh sách:
new_list = [num for num in range(5)]
print(new_list)
#output
#[0, 1, 2, 3, 4]
Điều này có cùng đầu ra như for
ví dụ về vòng lặp, nhưng với ít mã hơn đáng kể!
Hãy chia nhỏ nó ra:
- iterable trong trường hợp này là một dãy số từ 0 đến 4, sử dụng
range(5)
.range()
xây dựng một danh sách các số. - Bạn sử dụng
in
từ khóa để lặp qua các con số. - Các
num
theo saufor
khoản là một biến, một tên tạm thời cho mỗi giá trị trong iterable. Cho nênnum
sẽ bằngtrong lần lặp đầu tiên, sau đó
num
sẽ bằng1
trong lần lặp tiếp theo, v.v., cho đến khi nó đạt và bằng số 4, tại đó quá trình lặp sẽ dừng lại. - Các
num
trướcfor
mệnh đề là một biểu thức cho mỗi mục trong chuỗi. - Cuối cùng, danh sách mới (hoặc danh sách có thể lặp lại khác) được tạo sẽ được lưu trữ trong biến
new_list
.
Bạn thậm chí có thể thực hiện các phép toán trên các mục có trong iterable và kết quả sẽ được thêm vào danh sách mới:
new_list = [num * 2 for num in range(5)]
print(new_list)
#output
#[0, 2, 4, 6, 8]
Ở đây mỗi số trong range(5)
sẽ được nhân với hai và giá trị mới sẽ được lưu trữ trong biến new_list
.
Điều gì sẽ xảy ra nếu bạn có sẵn một danh sách mà bạn muốn thao tác và sửa đổi từng mục trong đó? Điều này sẽ tương tự như ví dụ từ trước đó, nơi chúng tôi đã tạo một danh sách các ô vuông.
Một lần nữa, bạn có thể đạt được điều đó chỉ với một dòng mã, sử dụng khả năng hiểu danh sách:
#initial list
numbers = [1,2,3,4,5,6]
#new list
#num * num is the operation that takes place to create the squares
square_numbers = [num * num for num in numbers]
print(square_numbers)
#output
[1, 4, 9, 16, 25, 36]
Cách sử dụng điều kiện với khả năng hiểu danh sách trong Python
Theo tùy chọn, bạn có thể sử dụng một if
tuyên bố với một sự hiểu biết danh sách.
Cú pháp chung trông như thế này:
new_list = [expression for variable in iterable if condition == True]
Điều kiện hoạt động như một bộ lọc và thêm kiểm tra bổ sung để có thêm độ chính xác và tùy chỉnh khi tạo danh sách mới.
Điều này có nghĩa là giá trị trong biểu thức phải đáp ứng một số tiêu chí và một điều kiện nhất định mà bạn chỉ định, để đi vào danh sách mới.
new_list = [num for num in range(50) if num % 2 == 0]
print(new_list)
#output
#[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48]
Trong ví dụ trên, chỉ những giá trị mà điều kiện num % 2 == 0
được kiểm tra và đánh giá là True sẽ nhập new_list
.
Toán tử modulo được sử dụng trên từng số trong dãy số bắt đầu từ 0 và kết thúc bằng 49.
Nếu số dư của các số khi chia cho 2 bằng 0 thì và chỉ khi đó nó mới vào danh sách.
Vì vậy, trong trường hợp này, nó tạo ra một danh sách chỉ các số chẵn.
Sau đó, bạn có thể làm cho nó cụ thể như bạn muốn.
Ví dụ: bạn có thể thêm nhiều điều kiện, như sau:
new_list = [num for num in range(50) if num > 20 and num % 2 == 0]
print(new_list)
#output
#[22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48]
Trong ví dụ này, có hai điều kiện num > 20
và num % 2 == 0
.
Các and
toán tử chỉ ra rằng cả hai phải được đáp ứng để giá trị được thêm vào danh sách mới.
Các giá trị không đáp ứng các điều kiện sẽ bị loại trừ và không được thêm vào.
Cách sử dụng khả năng hiểu danh sách trên các chuỗi trong Python
Bạn có thể tạo một danh sách mới với các ký tự riêng lẻ có trong một chuỗi nhất định.
fave_language_chars = [letter for letter in "Python"]
print(fave_language_chars)
#output
#['P', 'y', 't', 'h', 'o', 'n']
Danh sách mới được tạo bao gồm tất cả các chữ cái riêng biệt có trong chuỗi “Python”, hoạt động như một lần lặp.
Cũng giống như các số, bạn có thể thực hiện các thao tác trên các ký tự có trong một chuỗi và tùy chỉnh chúng tùy thuộc vào cách bạn muốn chúng xuất hiện trong danh sách mới mà bạn tạo.
Nếu bạn muốn tất cả các chữ cái đều là chữ hoa, bạn sẽ làm như sau:
fave_language_chars_upper = [letter.upper() for letter in "Python"]
print(fave_language_chars_upper)
#output
#['P', 'Y', 'T', 'H', 'O', 'N']
Ở đây bạn sử dụng .upper()
để chuyển đổi từng chữ cái trong “Python” thành chữ hoa và thêm chúng vào fave_language_chars_upper
Biến đổi.
Điều tương tự cũng xảy ra nếu bạn muốn tất cả các chữ cái của mình là chữ thường – thay vào đó, bạn sử dụng ký tự lower()
phương pháp.
Phần kết luận
Và bạn có nó rồi đấy! Bây giờ bạn đã biết những kiến thức cơ bản về hiểu danh sách trong Python.
Nó cung cấp một cú pháp thanh lịch và ngắn gọn để tạo danh sách mới dựa trên danh sách hiện có hoặc các lần lặp khác.
Nếu bạn muốn tìm hiểu thêm về Python, freeCodeCamp có Chứng chỉ Python.
Trong chương trình giảng dạy dựa trên dự án này, bạn sẽ bắt đầu học các nguyên tắc cơ bản về lập trình và chuyển sang các chủ đề phức tạp hơn như cấu trúc dữ liệu. Bạn cũng sẽ xây dựng năm dự án để thực hành những gì bạn đã học.
Cảm ơn đã đọc và mã hóa hạnh phúc!