Trong bài viết này, chúng ta sẽ tìm hiểu về Tìm kiếm tuyến tính và triển khai nó trong Python 3. x. Hoặc sớm hơn
thuật toán
Bắt đầu từ phần tử ngoài cùng bên trái của mảng[] đã cho và so sánh từng phần tử x với từng phần tử của mảng[]
Khi tôi đang xem xét các câu hỏi khác nhau mà một người có thể được hỏi trong một cuộc phỏng vấn viết mã, không thể tránh khỏi việc tôi bắt gặp một câu hỏi liên quan đến tìm kiếm một mảng.
Tôi đã tiếp cận vấn đề này bằng cách sử dụng vòng lặp for để tìm kiếm phần tử đã cho trong mảng và mã giả được tìm thấy bên dưới
- Xác định mảng, A, có chứa một số phần tử
- Xác định biến key_element chứa phần tử cần tìm
- Xác định hàm, search_element, chấp nhận mảng và key_element làm đầu vào
- Tạo một vòng lặp for trong hàm, vòng lặp này sẽ tìm kiếm phần tử được đề cập trong độ dài của mảng
- Tạo câu lệnh if trong vòng lặp for. Nếu phần tử khóa được chứa trong mảng, nó sẽ được in
- Khi vòng lặp for đã hoàn thành các lần lặp của nó, một thông báo sẽ xuất hiện cho biết quá trình tìm kiếm đã hoàn tất
- Khi hàm hoàn tất, hãy gọi hàm, hàm này sẽ chấp nhận đầu vào là mảng, A và phần tử, key_element
Mã cho thuật toán này có thể được tìm thấy trong ảnh chụp màn hình bên dưới
Ngoài việc tìm kiếm phần tử trong một mảng, bạn cũng có thể tìm kiếm một phần tử và trả về số chỉ mục của phần tử nếu nó được tìm thấy. Mã giả cho thuật toán sửa đổi này
- Xác định mảng, A, có chứa một số phần tử
- Xác định biến key_element chứa phần tử cần tìm
- Xác định hàm, search_index, chấp nhận mảng và key_element làm đầu vào
- Tạo một vòng lặp for trong hàm, vòng lặp này sẽ tìm kiếm phần tử được đề cập trong độ dài của mảng
- Tạo câu lệnh if trong vòng lặp for. Nếu phần tử khóa được chứa trong mảng, nó sẽ được in cùng với chỉ mục của phần tử khóa. Hàm cũng sẽ trả về số chỉ mục của từ. Nếu phần tử khóa không có trong mảng, hàm sẽ trả về giá trị -1
- Khi chức năng hoàn thành, hãy tạo biến, kết quả, để gọi hàm và sử dụng các biến đầu vào A và key_element
- Tạo câu lệnh if. Nếu kết quả là -1 thì một câu lệnh được in ra cho biết từ đó không có trong mảng;
Mã cho thuật toán này có thể được tìm thấy trong ảnh chụp màn hình bên dưới
Tóm lại, có khá nhiều cách để giải quyết vấn đề máy tính này và tôi chỉ trình bày hai trong số đó. Khi tôi nghiên cứu thêm về cấu trúc và thuật toán, tôi sẽ đăng những gì tôi đã học được trên nền tảng này
Thêm nội dung bằng tiếng Anh. io. Đăng ký nhận bản tin miễn phí hàng tuần của chúng tôi. Nhận quyền truy cập độc quyền để viết các cơ hội và lời khuyên trong cộng đồng của chúng tôi Discord
Trong hướng dẫn này, chúng ta sẽ xem cách kiểm tra xem một danh sách có chứa một phần tử hoặc giá trị trong Python hay không. Chúng tôi sẽ sử dụng một danh sách các chuỗi, chứa một vài con vật
animals = ['Dog', 'Cat', 'Bird', 'Fish']
Kiểm tra xem danh sách có chứa phần tử với vòng lặp không
Một phương pháp đơn giản và thô sơ để kiểm tra xem một danh sách có chứa một phần tử đang lặp qua nó hay không và kiểm tra xem mục chúng ta đang tìm có khớp với mục chúng ta đang tìm kiếm không. Hãy sử dụng vòng lặp
7 cho việc nàyfor animal in animals: if animal == 'Bird': print['Chirp!']
for animal in animals: if animal == 'Bird': print['Chirp!']
Mã này sẽ dẫn đến
Chirp!
Kiểm tra xem Danh sách có chứa phần tử With trong Toán tử không
Bây giờ, một cách tiếp cận ngắn gọn hơn sẽ là sử dụng toán tử
8 có sẵn, nhưng với câu lệnhfor animal in animals: if animal == 'Bird': print['Chirp!']
9 thay vì câu lệnhfor animal in animals: if animal == 'Bird': print['Chirp!']
7. Khi được ghép nối vớifor animal in animals: if animal == 'Bird': print['Chirp!']
9, nó trả vềfor animal in animals: if animal == 'Bird': print['Chirp!']
2 nếu một phần tử có tồn tại trong một chuỗi hay không. Cú pháp của toán tửChirp!
8 trông như thế nàyfor animal in animals: if animal == 'Bird': print['Chirp!']
0for animal in animals: if animal == 'Bird': print['Chirp!']
Bằng cách sử dụng toán tử này, chúng ta có thể rút ngắn đoạn mã trước đó thành một câu lệnh duy nhất
1for animal in animals: if animal == 'Bird': print['Chirp!']
Đoạn mã này sẽ xuất ra như sau
2for animal in animals: if animal == 'Bird': print['Chirp!']
Cách tiếp cận này có hiệu quả tương tự như vòng lặp
7, vì toán tửfor animal in animals: if animal == 'Bird': print['Chirp!']
8, được sử dụng như thế này, gọi hàmfor animal in animals: if animal == 'Bird': print['Chirp!']
6, vốn dĩ đã lặp qua danh sách - tuy nhiên, nó dễ đọc hơn nhiềuChirp!
Kiểm tra xem Danh sách có chứa phần tử không có trong Toán tử
Ngược lại, chúng ta có thể sử dụng toán tử
7, ngược logic với toán tửChirp!
8. Nó trả vềfor animal in animals: if animal == 'Bird': print['Chirp!']
2 nếu phần tử không có trong một chuỗiChirp!
Hãy viết lại ví dụ mã trước để sử dụng toán tử
7Chirp!
0for animal in animals: if animal == 'Bird': print['Chirp!']
Chạy mã này sẽ không tạo ra bất kỳ thứ gì, vì
01 có trong danh sách của chúng tôifor animal in animals: if animal == 'Bird': print['Chirp!']
Nhưng nếu chúng ta thử với một
02for animal in animals: if animal == 'Bird': print['Chirp!']
3for animal in animals: if animal == 'Bird': print['Chirp!']
Mã này dẫn đến
4for animal in animals: if animal == 'Bird': print['Chirp!']
Kiểm tra xem danh sách có chứa phần tử với Lambda không
Một cách khác để bạn có thể kiểm tra xem một phần tử có tồn tại hay không là lọc ra mọi thứ khác ngoài phần tử đó, giống như sàng lọc cát và kiểm tra xem cuối cùng còn sót lại phần vỏ nào không. Phương thức
03 tích hợp chấp nhận hàm lambda và danh sách làm đối số của nó. Chúng ta có thể sử dụng hàm lambda ở đây để kiểm tra chuỗifor animal in animals: if animal == 'Bird': print['Chirp!']
04 của mình trong danh sáchfor animal in animals: if animal == 'Bird': print['Chirp!']
05for animal in animals: if animal == 'Bird': print['Chirp!']
Sau đó, chúng tôi bọc kết quả trong một
06 vì phương thứcfor animal in animals: if animal == 'Bird': print['Chirp!']
03 trả về một đối tượngfor animal in animals: if animal == 'Bird': print['Chirp!']
08, không phải kết quả. Nếu chúng ta đóng gói đối tượngfor animal in animals: if animal == 'Bird': print['Chirp!']
08 trong một danh sách, nó sẽ chứa các phần tử còn lại sau khi lọcfor animal in animals: if animal == 'Bird': print['Chirp!']
2Chirp!
Mã này dẫn đến
Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
0for animal in animals: if animal == 'Bird': print['Chirp!']
Bây giờ, cách tiếp cận này không phải là hiệu quả nhất. Nó khá chậm so với ba cách tiếp cận trước đây mà chúng tôi đã sử dụng. Bản thân phương thức
03 tương đương với hàm tạofor animal in animals: if animal == 'Bird': print['Chirp!']
1for animal in animals: if animal == 'Bird': print['Chirp!']
Hiệu suất bị chậm lại của mã này, trong số những thứ khác, xuất phát từ thực tế là cuối cùng chúng tôi đang chuyển đổi kết quả thành một danh sách, cũng như thực thi một chức năng trên mục trên mỗi lần lặp lại
Kiểm tra xem Danh sách có chứa phần tử hay không bằng cách sử dụng bất kỳ []
Một cách tiếp cận tích hợp tuyệt vời khác là sử dụng hàm
11, đây chỉ là một hàm trợ giúp kiểm tra xem có bất kỳ [ít nhất 1] trường hợp nào của một phần tử trong danh sách không. Nó trả vềfor animal in animals: if animal == 'Bird': print['Chirp!']
2 hoặcChirp!
13 dựa trên sự hiện diện hay thiếu phần tử đófor animal in animals: if animal == 'Bird': print['Chirp!']
2for animal in animals: if animal == 'Bird': print['Chirp!']
Vì kết quả này là
2, câu lệnhChirp!
15 của chúng ta được gọi làfor animal in animals: if animal == 'Bird': print['Chirp!']
2for animal in animals: if animal == 'Bird': print['Chirp!']
Cách tiếp cận này cũng là một cách hiệu quả để kiểm tra sự hiện diện của một phần tử. Nó hiệu quả như ba cái đầu tiên
Kiểm tra xem Danh sách có chứa phần tử hay không bằng cách sử dụng đếm[]
Cuối cùng, chúng ta có thể sử dụng hàm
16 để kiểm tra xem một phần tử có hay khôngfor animal in animals: if animal == 'Bird': print['Chirp!']
4for animal in animals: if animal == 'Bird': print['Chirp!']
Hàm này trả về sự xuất hiện của phần tử đã cho trong một chuỗi. Nếu nó lớn hơn 0, chúng tôi có thể yên tâm rằng một mục nhất định có trong danh sách
Hãy kiểm tra kết quả của hàm
16for animal in animals: if animal == 'Bird': print['Chirp!']
5for animal in animals: if animal == 'Bird': print['Chirp!']
Hàm ________ 116 vốn đã lặp danh sách để kiểm tra số lần xuất hiện và mã này dẫn đến kết quả
2for animal in animals: if animal == 'Bird': print['Chirp!']
Sự kết luận
Trong hướng dẫn này, chúng tôi đã giới thiệu một số cách để kiểm tra xem một phần tử có trong danh sách hay không. Chúng tôi đã sử dụng vòng lặp
7, toán tửfor animal in animals: if animal == 'Bird': print['Chirp!']
8 vàfor animal in animals: if animal == 'Bird': print['Chirp!']
7, cũng như các phương thứcChirp!
03,for animal in animals: if animal == 'Bird': print['Chirp!']
11 vàfor animal in animals: if animal == 'Bird': print['Chirp!']
16for animal in animals: if animal == 'Bird': print['Chirp!']