Hướng dẫn how do you search a list in python? - làm thế nào để bạn tìm kiếm một danh sách trong python?

Đối với câu hỏi đầu tiên của bạn: "

matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
7" hoàn toàn tốt và sẽ hoạt động nếu
matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
8 bằng một trong các yếu tố bên trong
matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
9. Mục phải khớp chính xác với một mục trong danh sách. Chẳng hạn,
matches = filter(fulfills_some_condition, lst)
0 và
matches = filter(fulfills_some_condition, lst)
1 không khớp. Giá trị điểm nổi đặc biệt có thể bị không chính xác. Ví dụ,
matches = filter(fulfills_some_condition, lst)
2.

Đối với câu hỏi thứ hai của bạn: Thực tế có một số cách có thể nếu "tìm" những thứ trong danh sách.

Kiểm tra xem có gì đó bên trong không

Đây là trường hợp sử dụng mà bạn mô tả: kiểm tra xem một cái gì đó có trong danh sách hay không. Như bạn đã biết, bạn có thể sử dụng toán tử

matches = filter(fulfills_some_condition, lst)
3 cho điều đó:

3 in [1, 2, 3] # => True

Lọc một bộ sưu tập

Đó là, tìm tất cả các yếu tố trong một chuỗi đáp ứng một điều kiện nhất định. Bạn có thể sử dụng danh sách hiểu hoặc biểu thức máy phát cho điều đó:

matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)

Cái sau sẽ trả lại một trình tạo mà bạn có thể tưởng tượng như một loại danh sách lười biếng sẽ chỉ được xây dựng ngay khi bạn lặp lại thông qua nó. Nhân tiện, cái đầu tiên hoàn toàn tương đương với

matches = filter(fulfills_some_condition, lst)

Trong Python 2. Ở đây bạn có thể thấy các chức năng bậc cao tại nơi làm việc. Trong Python 3,

matches = filter(fulfills_some_condition, lst)
4 không trả lại danh sách, mà là một đối tượng giống như trình tạo.

Tìm sự xuất hiện đầu tiên

Nếu bạn chỉ muốn điều đầu tiên phù hợp với một điều kiện (nhưng bạn chưa biết nó là gì), thì cũng tốt khi sử dụng một vòng lặp (có thể sử dụng mệnh đề

matches = filter(fulfills_some_condition, lst)
5, điều này không thực sự nổi tiếng). Bạn cũng có thể dùng

next(x for x in lst if ...)

sẽ trả lại trận đấu đầu tiên hoặc tăng

matches = filter(fulfills_some_condition, lst)
6 nếu không tìm thấy. Ngoài ra, bạn có thể sử dụng

next((x for x in lst if ...), [default value])

Tìm vị trí của một mặt hàng

Đối với các danh sách, cũng có phương thức

matches = filter(fulfills_some_condition, lst)
7 đôi khi có thể hữu ích nếu bạn muốn biết nơi một phần tử nhất định nằm trong danh sách:

[1,2,3].index(2) # => 1
[1,2,3].index(4) # => ValueError

Tuy nhiên, lưu ý rằng nếu bạn có bản sao,

matches = filter(fulfills_some_condition, lst)
8 luôn trả về chỉ số thấp nhất: ......

[1,2,3,2].index(2) # => 1

Nếu có các bản sao và bạn muốn tất cả các chỉ mục thì bạn có thể sử dụng

matches = filter(fulfills_some_condition, lst)
9 thay thế:

[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]

Hướng dẫn how do you search a list in python? - làm thế nào để bạn tìm kiếm một danh sách trong python?

Nó sẽ trả về đúng nếu một yếu tố tồn tại trong danh sách; Khác, nó sẽ trả về sai.

Để tìm một phần tử trong pythonlist, hãy sử dụng phương thức Danh sách (). Chỉ số danh sách () là một phương thức tích hợp tìm kiếm một phần tử trong danh sách và trả về chỉ mục của nó.find an element in the Python list, use the list index() method. The list index() is a built-in method that searches for an element in the list and returns its index.

Nếu cùng một phần tử có mặt nhiều lần, phương thức trả về chỉ số của lần xuất hiện đầu tiên của phần tử. Chỉ mục trong Python bắt đầu từ 0, không phải 1. Vì vậy, thông qua một chỉ mục, chúng ta có thể tìm thấy vị trí của một phần tử trong danh sách.The index in Python starts from 0, not 1. So, through an index, we can find the position of an element in the list.

# app.py

streaming = ['netflix', 'hulu', 'disney+', 'appletv+']

index = streaming.index('disney+')
print('The index of disney+ is:', index)

Đầu ra

➜  pyt python3 app.py
The index of disney+ is: 2
➜  pyt

Phương thức list.index () có một đối số duy nhất, phần tử và trả về vị trí của nó trong danh sách.list.index() method takes a single argument, the element, and returns its position in the list.

Tìm kiếm Python trong danh sách

Đó là cách tiếp cận đơn giản là thực hiện tìm kiếm tuyến tính; cho & nbsp; ví dụ,linear search; for example,

  1. Bắt đầu từ mục ngoài cùng bên trái của danh sách và so sánh X với từng mục một.
  2. Nếu x khớp với một mục, hãy trả về true.
  3. Nếu X không phù hợp với bất kỳ mục nào, hãy trả lại sai.

Xem mã sau.

matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
0

Trước tiên chúng tôi đã tạo một chức năng do người dùng xác định gọi là & nbsp; tìm kiếm & nbsp; chấp nhận hai đối số trong mã trên.search that accepts two arguments in the above code.

Đối số đầu tiên là danh sách của chúng tôi, nơi chúng tôi cần tìm mục và tham số thứ hai là nền tảng, đó là chuỗi chúng tôi cần tìm kiếm trong danh sách. Vì vậy, chúng tôi đang lặp qua một danh sách và so sánh từng yếu tố danh sách với đối số nền tảng.

Nếu cả hai được khớp, phần tử được tìm thấy; Nếu không, nó không phải là.

Đầu ra

Phương thức list.index () có một đối số duy nhất, phần tử và trả về vị trí của nó trong danh sách.

Tìm kiếm Python trong danh sách

Đó là cách tiếp cận đơn giản là thực hiện tìm kiếm tuyến tính; cho & nbsp; ví dụ,Python in operator.

Bắt đầu từ mục ngoài cùng bên trái của danh sách và so sánh X với từng mục một.

matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
2

Nếu x khớp với một mục, hãy trả về true.True if an element exists in the list; else, it will return False.

Xem mã sau.

matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
3

Đầu ra

matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
4

Phương thức list.index () có một đối số duy nhất, phần tử và trả về vị trí của nó trong danh sách.

Tìm kiếm Python trong danh sách

matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
5

Đó là cách tiếp cận đơn giản là thực hiện tìm kiếm tuyến tính; cho & nbsp; ví dụ,

Đầu ra

matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
6

Bắt đầu từ mục ngoài cùng bên trái của danh sách và so sánh X với từng mục một.

Nếu x khớp với một mục, hãy trả về true.

Nếu X không phù hợp với bất kỳ mục nào, hãy trả lại sai.

Xem mã sau.