Trong Python, việc thao tác với các phần tử trong danh sách, hay còn gọi là duyệt phần tử, là một kỹ năng cơ bản mà bất kỳ lập trình viên Python nào cũng cần nắm vững. Có nhiều phương pháp khác nhau để thực hiện việc này, từ các vòng lặp quen thuộc đến những kỹ thuật nâng cao hơn. Để tìm hiểu chi tiết về các cách duyệt phần tử của list trong Python, mời bạn theo dõi bài viết dưới đây.
Các điểm chính
Khi đọc xong bài viết, bạn sẽ:
- Nắm vững kiến thức cơ bản về list (danh sách) trong Python: Bạn sẽ hiểu rõ list là gì, tại sao nó quan trọng và cách nó hoạt động trong Python. Điều này là nền tảng quan trọng để bạn làm việc hiệu quả với dữ liệu.
- Làm chủ các phương pháp duyệt list khác nhau: Bạn sẽ không chỉ biết về vòng lặp for và while, mà còn làm quen với những kỹ thuật duyệt list mạnh mẽ hơn như dùng index, list comprehension và hàm
enumerate()
. Điều này giúp bạn lựa chọn phương pháp phù hợp nhất cho từng tình huống cụ thể. - Viết code Python ngắn gọn và hiệu quả: Bạn sẽ được hướng dẫn cách sử dụng các kỹ thuật duyệt list một cách tối ưu, giúp code của bạn dễ đọc, dễ bảo trì và chạy nhanh hơn. List comprehension là một ví dụ điển hình cho việc này.
- Nâng cao tư duy lập trình và khả năng giải quyết vấn đề: Việc hiểu và áp dụng các phương pháp duyệt list khác nhau sẽ giúp bạn phát triển tư duy logic, sáng tạo và khả năng giải quyết các bài toán liên quan đến xử lý dữ liệu trong Python.
Duyệt phần tử của list trong Python
Duyệt phần tử của list trong Python là thực hiện lặp qua từng phần tử có trong một list. Chúng ta thực hiện việc này để tiến hành các thao tác mong muốn trên mỗi phần tử. Các thao tác này có thể bao gồm sửa đổi list, các thao tác có điều kiện, xử lý chuỗi, phân tích dữ liệu,…

Python cung cấp nhiều phương pháp khác nhau để duyệt phần tử của list, trong đó phổ biến nhất là vòng lặp for
. Chúng ta cũng có thể sử dụng vòng lặp while
để duyệt qua các phần tử, mặc dù while
đòi hỏi phải xử lý thủ công biến điều khiển vòng lặp (chẳng hạn, chỉ số của phần tử).
Duyệt phần tử của list với vòng lặp for
Vòng lặp for
trong Python được sử dụng để duyệt qua một chuỗi (như list, tuple, dictionary, string, hoặc range) hoặc bất kỳ đối tượng “iterable” nào khác. Vòng lặp for cho phép bạn thực thi một khối code lặp đi lặp lại cho mỗi phần tử trong chuỗi đó.
Trong vòng lặp for
, bạn có thể truy cập từng phần tử trong chuỗi bằng cách sử dụng một biến, cho phép bạn thực hiện các thao tác hoặc xử lý logic dựa trên giá trị của phần tử đó. Chúng ta có thể duyệt qua các phần tử của list bằng cách sử dụng vòng lặp for
để duyệt qua từng phần tử trong list.
Cú pháp
Đây là cú pháp cơ bản để duyệt các phần tử của list sử dụng vòng lặp for
trong Python:
for phần_tử in danh_sách:
# Khối code được thực thi
Giải thích cú pháp:
for
: Từ khóa bắt đầu vòng lặpfor
.phần_tử
: Tên biến bạn tự đặt, biến này sẽ lần lượt nhận giá trị của từng phần tử trongdanh_sách
ở mỗi lần lặp.in
: Từ khóa, đi sauphần_tử
và trướcdanh_sách
.danh_sách
: Tên của list mà bạn muốn duyệt.:
(Dấu hai chấm): Bắt buộc sau tên list.# Khối code được thực thi
: Phần code được thụt lề (thường là 4 dấu cách hoặc 1 tab) bên trong vòng lặpfor
. Phần này sẽ được thực thi với từngphần_tử
.
Ví dụ
Trong ví dụ sau, chúng ta sử dụng vòng lặp for để duyệt qua từng loại trái cây trong danh sách cac_loai_trai_cay
và in ra tên của từng loại, kèm theo một dấu phẩy và khoảng trắng:
cac_loai_trai_cay = ["Cam", "Xoài", "Mít", "Dứa", "Mận"]
for trai_cay in cac_loai_trai_cay:
print(trai_cay, end=", ")
Khi chạy code trên, màn hình sẽ hiển thị:
Cam, Xoài, Mít, Dứa, Mận,
Giải thích code:
cac_loai_trai_cay
: Khai báo một list có tên làcac_loai_trai_cay
, chứa các chuỗi là tên các loại trái cây.for trai_cay in cac_loai_trai_cay:
: Bắt đầu vòng lặpfor
.trai_cay
: Biến sẽ lần lượt nhận giá trị là “Cam”, rồi đến “Xoài”, “Mít”, “Dứa”, “Mận” trong các lần lặp.in cac_loai_trai_cay
: Cho biết biếntrai_cay
sẽ lấy giá trị từcac_loai_trai_cay
.print(trai_cay, end=", ")
: Trong mỗi lần lặp, in ra giá trị của biếntrai_cay
(tức là tên của loại trái cây). Tham sốend=", "
của hàmprint
giúp các tên trái cây in ra trên cùng một dòng, ngăn cách nhau bởi dấu phẩy và khoảng trắng, thay vì xuống dòng sau mỗi lần in.
Duyệt phần tử của list bằng vòng lặp while
Vòng lặp while
trong Python được sử dụng để thực thi lặp đi lặp lại một khối lệnh, miễn là một điều kiện cụ thể vẫn cho kết quả là “True
“.
Chúng ta có thể duyệt qua các phần tử của list bằng cách sử dụng vòng lặp while
thông qua việc khởi tạo một biến chỉ số (index variable), sau đó duyệt qua list bằng cách sử dụng biến chỉ số này và tăng biến chỉ số đó cho đến khi chạm đến cuối của list.
Một biến chỉ số được sử dụng bên trong vòng lặp để theo dõi vị trí hiện tại (hay chỉ số) trong một chuỗi, chẳng hạn như một list hoặc mảng. Biến này thường được khởi tạo trước vòng lặp và được cập nhật bên trong vòng lặp để duyệt qua chuỗi.
Cú pháp
Dưới đây là cú pháp cơ bản để duyệt phần tử của list bằng vòng lặp while
trong Python:
while điều_kiện:
# Khối lệnh cần thực thi
Ví dụ
Trong ví dụ dưới đây, ta duyệt qua từng phần tử trong my_list
bằng cách sử dụng vòng lặp while
. Chúng ta dùng biến chỉ số index để truy cập tuần tự từng phần tử, rồi tăng index sau mỗi lần lặp để chuyển sang phần tử tiếp theo:
my_list = ["táo", "chuối", "cam", "xoài", "dứa"]
index = 0
while index < len(my_list):
print(my_list[index])
index += 1
Khi chạy đoạn code trên, kết quả hiển thị sẽ là:
táo
chuối
cam
xoài
dứa
Giải thích:
my_list
: Một list chứa các loại trái cây.index = 0
: Khởi tạo biếnindex
với giá trị ban đầu là 0 (vị trí của phần tử đầu tiên trong list).while index < len(my_list)
: Điều kiện của vòng lặpwhile
. Vòng lặp sẽ tiếp tục chừng nào giá trị củaindex
còn nhỏ hơn độ dài củamy_list
(tức là còn phần tử để duyệt).len(my_list)
: Trả về độ dài (số phần tử) củamy_list
.print(my_list[index])
: In ra màn hình phần tử ở vị tríindex
trongmy_list
.index += 1
: Tăng giá trị củaindex
lên 1, để trong lần lặp tiếp theo, ta sẽ làm việc với phần tử kế tiếp.
Duyệt phần tử của list trong Python với index
Chỉ số (index) là một giá trị số đại diện cho vị trí của một phần tử trong một chuỗi, chẳng hạn như List, bắt đầu từ 0 cho phần tử đầu tiên.
Chúng ta có thể duyệt qua các phần tử của List bằng cách sử dụng index. Cách thực hiện là lặp qua một dải các chỉ số tương ứng với độ dài của List và truy cập từng phần tử bằng cách sử dụng index trong vòng lặp.
Ví dụ dưới đây khởi tạo một List "danh_sach_diem"
chứa các số nguyên. Sau đó, code tạo ra một dải các chỉ số tương ứng với độ dài của List. Tiếp theo, code lặp qua từng chỉ số trong dải đó và in ra giá trị tại chỉ số tương ứng trong List "danh_sach_diem"
:
"danh_sach_diem":
danh_sach_diem = [25, 12, 10, -21, 10, 100]
chi_so = range(len(danh_sach_diem))
for i in chi_so:
print ("danh_sach_diem[{}]: ".format(i), danh_sach_diem[i])
Khi chạy đoạn code trên, bạn sẽ nhận được kết quả như sau:
danh_sach_diem[0]: 25
danh_sach_diem[1]: 12
danh_sach_diem[2]: 10
danh_sach_diem[3]: -21
danh_sach_diem[4]: 10
danh_sach_diem[5]: 100
Giải thích code:
danh_sach_diem = [25, 12, 10, -21, 10, 100]
: Dòng này tạo mộtList
có tên làdanh_sach_diem
và gán choList
này một dãy số.chi_so = range(len(danh_sach_diem))
:len(danh_sach_diem)
trả về độ dài củaList
(trong trường hợp này là 6). Hàmrange()
tạo ra một chuỗi các số từ 0 đến 5 (6 phần tử). Biếnchi_so
sẽ đại diện cho dải số này.for i in chi_so:
: Đây là một vòng lặpfor
. Biếni
sẽ lần lượt nhận các giá trị trong dảichi_so
(tức là 0, 1, 2, 3, 4, 5).print ("danh_sach_diem[{}]: ".format(i), danh_sach_diem[i])
: Trong mỗi lần lặp, dòng lệnh này in ra giá trị của phần tử trongdanh_sach_diem
tại vị trí có chỉ số lài
. Ví dụ, khii
là 0,danh_sach_diem[i]
sẽ làdanh_sach_diem[0]
, tức là phần tử đầu tiên (25).
Duyệt phần tử sử dụng List Comprehension trong Python
List Comprehension trong Python là một cách ngắn gọn để tạo List bằng cách áp dụng một biểu thức cho từng phần tử của một iterable (đối tượng có thể lặp). Các biểu thức này có thể là các phép toán số học, lời gọi hàm, biểu thức điều kiện,...
Chúng ta có thể duyệt qua các phần tử bằng List Comprehension bằng cách chỉ định biểu thức và iterable (như List, tuple, dictionary, string, hoặc range). Cú pháp như sau:
[biểu_thức for phần_tử in đối_tượng_có_thể_lặp]
Cú pháp này áp dụng biểu_thức
cho từng phần_tử trong đối_tượng_có_thể_lặp
và tạo ra một List chứa các kết quả.
Trong ví dụ này, ta sử dụng List Comprehension để duyệt qua từng số trong một List các số, tính bình phương của mỗi số và lưu kết quả bình phương vào List mới binh_phuong_cac_so
.
cac_so = [1, 2, 3, 4, 5]
binh_phuong_cac_so = [so ** 2 for so in cac_so]
print(binh_phuong_cac_so)
Chúng ta sẽ nhận được kết quả như sau:
[1, 4, 9, 16, 25]
Giải thích:
cac_so = [1, 2, 3, 4, 5]
: Khởi tạo một List có tên làcac_so
chứa các số từ 1 đến 5.binh_phuong_cac_so = [so ** 2 for so in cac_so]
: Đây là phần List Comprehension.for so in cac_so:
: Vòng lặp duyệt qua từng phần tử trong Listcac_so
. Mỗi phần tử lần lượt được gán cho biếnso
.so ** 2
: Biểu thức tính bình phương củaso
.[so ** 2 for so in cac_so]
: Toàn bộ cú pháp[so ** 2 for so in cac_so]
có nghĩa là: “Với mỗiso
trongcac_so
, hãy tínhso ** 2
và đưa kết quả vào một List mới”. List mới này được gán cho biếnbinh_phuong_cac_so
.print(binh_phuong_cac_so)
: In Listbinh_phuong_cac_so
ra màn hình.
Duyệt phần tử của list với hàm enumerate()
Hàm enumerate()
trong Python được sử dụng để duyệt qua một đối tượng iterable (có thể lặp lại), đồng thời cung cấp chỉ số của từng phần tử.
Chúng ta có thể duyệt bằng hàm enumerate()
bằng cách áp dụng nó cho đối tượng iterable. Cú pháp như sau:
for index, item in enumerate(iterable):
# Xử lý index và item
Cú pháp này cung cấp cả chỉ số và phần tử của từng thành phần trong đối tượng iterable trong quá trình duyệt.
Trong ví dụ sau, chúng ta sẽ sử dụng hàm enumerate()
để duyệt qua một list các món ăn Việt Nam và lấy ra từng món ăn cùng với thứ tự của món ăn đó trong danh sách:
cac_mon_an = ["Phở", "Bún chả", "Gỏi cuốn", "Bánh mì"]
for thu_tu, mon_an in enumerate(cac_mon_an):
print(f"Món thứ {thu_tu + 1}: {mon_an}")
Khi chạy đoạn code trên, ta sẽ thấy kết quả như sau:
Món thứ 1: Phở
Món thứ 2: Bún chả
Món thứ 3: Gỏi cuốn
Món thứ 4: Bánh mì
Giải thích:
cac_mon_an
: Đây là một list chứa tên các món ăn.enumerate(cac_mon_an)
: Hàmenumerate()
được gọi với đối số là listcac_mon_an
.for thu_tu, mon_an in ...:
: Vòng lặpfor
được sử dụng để duyệt qua kết quả trả về từenumerate()
. Mỗi lần lặp,enumerate()
sẽ trả về một cặp giá trị:thu_tu
: Chỉ số của phần tử trong list (bắt đầu từ 0).mon_an
: Giá trị của phần tử tương ứng.
print(f"Món thứ {thu_tu + 1}: {mon_an}")
: In ra thứ tự và tên món ăn. Lưu ý rằng ta cộngthu_tu
với 1 để hiển thị thứ tự món ăn bắt đầu từ 1 thay vì 0 cho dễ đọc.
Lời kết
Như vậy, chúng ta đã cùng nhau tìm hiểu chi tiết về các cách duyệt phần tử của list trong Python. Từ vòng lặp for, while, sử dụng index, List Comprehension cho đến hàm enumerate(), mỗi phương pháp đều có ưu điểm riêng. Hy vọng những kiến thức này sẽ hữu ích cho bạn trong quá trình lập trình Python. Việc lựa chọn phương pháp nào sẽ tùy thuộc vào ngữ cảnh và mục đích sử dụng của bạn.
Mọi người cũng đọc