Làm sao tìm mục trong list Python? Câu hỏi mọi lập trình viên Python gặp phải. May mắn ngôn ngữ cung cấp nhiều cách tìm mục trong list, như dùng toán tử in hoặc tìm kiếm tuyến tính (linear search).
Trong hướng dẫn này, nói về bốn phương pháp tìm mục trong list. Chúng ta đi qua ví dụ từng phương pháp để bạn học cách hoạt động.
Tìm trong List Python dùng "in"
Python có toán tử đặc biệt in. Toán tử kiểm tra giá trị có trong list không. Toán tử đôi khi gọi "membership operator" vì kiểm tra giá trị thành viên list.
Ví dụ, chạy cửa hàng giày muốn kiểm tra giày cụ thể có hàng không. Cách là dùng in.
Bắt đầu định nghĩa list giày:
shoes = ["Adidas ZX Flux", "Adidas Ultraboost", "Adidas Gazelle", "Adidas Runfalcon"]
Tiếp theo, yêu cầu người dùng chèn giày tìm:
to_find = input("What shoe are you looking for? ") Dùng input() thu tên giày. Tiếp theo, dùng "if" kiểm tra giày người dùng nhập có trong list giày:
if to_find in shoes: print("{} shoes are in stock.".format(to_find)) else: print("{} shoes are not in stock.".format(to_find)) if thực thi nếu giày nhập tìm thấy list. Ngược lại, else chạy. Thử mã:
81% người tham gia cho biết họ cảm thấy tự tin hơn về cơ hội việc làm công nghệ sau khi tham gia bootcamp. Được ghép nối với bootcamp ngay hôm nay.
Sinh viên trung bình tốt nghiệp bootcamp mất chưa đến sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được việc đầu tiên.
What shoe are you looking for? Adidas Runfalcon Adidas Runfalcon shoes are in stock.
Mã xác định thành công "Adidas Runfalcon" có hàng. Gây if thực thi.
Tìm trong List Python dùng Linear Search
Tìm kiếm tuyến tính là thuật toán tìm kiếm đơn giản tìm mục trong list. Linear search bắt đầu một đầu list so sánh giá trị với mọi phần tử. Nếu giá trị trong list, linear search trả về vị trí mục.
Bắt đầu viết hàm linear search:
def linear_search(array, to_find): for i in range(0, len(array)): if array[i] == to_find: return i return -1
Mã dùng "for" lặp qua mỗi mục "array". Nếu mục tìm thấy, vị trí chỉ mục trả về chương trình chính. Nếu không tìm thấy sau duyệt toàn list, -1 trả về.
Đi chương trình chính gọi hàm:
shoes = ["Adidas ZX Flux", "Adidas Ultraboost", "Adidas Gazelle", "Adidas Runfalcon"] to_find = input("What shoe are you looking for? ") found = linear_search(shoes, to_find) Mã hỏi giày người dùng tìm. Sau đó, gọi linear_search tìm giày có trong list không.
Cuối cùng, dùng if báo cho người dùng giày tìm thấy:
if found != -1: print("{} shoes are in stock.".format(to_find)) else: print("{} shoes are not in stock.".format(to_find)) Nếu linear_search trả -1, nghĩa là mục không tìm thấy list. if chạy nếu giá trị linear_search không bằng -1. Nếu bằng -1, else chạy.
Thử chạy mã:
What shoe are you looking for? Adidas Samba Adidas Samba shoes are not in stock.
Mã không tìm thấy Adidas Samba trong list.
Tìm trong List Python dùng index()
Hàm tích hợp index() cho phép tìm vị trí chỉ mục mục trong list. Viết chương trình tìm vị trí giày trong list dùng index().
Đầu tiên, định nghĩa list giày. Hỏi người dùng chèn giày chương trình tìm trong list:
shoes = ["Adidas ZX Flux", "Adidas Ultraboost", "Adidas Gazelle", "Adidas Runfalcon"] to_find = input("What shoe are you looking for? ") Tiếp theo, dùng index() trả vị trí chỉ mục giày đó:
try: found = shoes.index(to_find) print("{} shoes are in stock. They are at index position {} in the list of shoes.".format(to_find, found)) except: print("{} shoes are not in stock.".format(to_find)) Phương thức index() trả ValueError nếu mục không tìm thấy list. Đó là lý do dùng trong khối "try...except".
Nếu giày không tìm thấy, ValueError nêu lên. Lúc này, khối "except" chạy. Nếu giày tìm thấy, "try" thực thi thành công.
Chạy mã:
What shoe are you looking for? Adidas Gazelle Adidas Gazelle shoes are in stock. They are at index position 2 in the list of shoes.
Mã xác định thành công Adidas Gazelle có hàng. Chương trình cũng cho vị trí giày lưu trong list.
Tìm trong List Python dùng List Comprehension
Bạn tìm nhiều mục list đáp ứng điều kiện nhất định dùng list comprehension.
Chúng ta có list giày chỉ muốn trả về thương hiệu Adidas. Làm bằng list comprehension. Bắt đầu định nghĩa list giày:
shoes = ["Nike PG 4", "Adidas Ultraboost", "Adidas Gazelle", "Nike Air Max Verona"]
Tiếp theo, viết list comprehension lấy giày chứa "Nike". List comprehension dùng cú pháp giống for:
nike_shoes = [shoe for shoe in shoes if "Nike" in shoe] print(nike_shoes)
Biểu thức list lặp qua mỗi giày "shoe". Biểu thức kiểm tra từ Nike có trong tên giày. Nếu có, giày thêm vào "nike_shoes". Ngược lại, không xảy ra gì.
Chạy mã:
['Nike PG 4', 'Nike Air Max Verona']
Mã trả list giày Nike.
Kết luận
Nhiều cách tìm mục trong list. Phương pháp phổ biến:
- Dùng
inmembership operator - Dùng linear search
- Dùng
index() - Dùng list comprehension
Bây giờ bạn đã sẵn sàng tìm mục trong list Python như coder chuyên nghiệp!