Đối với câu hỏi đầu tiên của bạn: "
matches = filter[fulfills_some_condition, lst]
5" hoàn toàn tốt và sẽ hoạt động nếu matches = filter[fulfills_some_condition, lst]
6 bằng một trong các yếu tố bên trong matches = filter[fulfills_some_condition, lst]
7. 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]
8 và matches = filter[fulfills_some_condition, lst]
9 không khớp. Giá trị điểm nổi đặc biệt có thể bị không chính xác. Ví dụ, next[x for x in lst if ...]
0.Đố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ử
next[x for x in lst if ...]
1 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,
next[x for x in lst if ...]
2 không trả lại danh sách, mà là một đối tượng giống như máy phát.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 đề
next[x for x in lst if ...]
3, điều này không thực sự nổi tiếng]. Bạn cũng có thể dùngnext[x for x in lst if ...]
sẽ trả lại trận đấu đầu tiên hoặc tăng
next[x for x in lst if ...]
4 nếu không tìm thấy. Ngoài ra, bạn có thể sử dụngnext[[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
next[x for x in lst if ...]
5 đô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,
next[x for x in lst if ...]
6 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
next[x for x in lst if ...]
7 thay thế:[i for i,x in enumerate[[1,2,3,2]] if x==2] # => [1, 3]
Trong bài viết này, bạn sẽ tìm hiểu cách tìm chỉ mục của một phần tử có trong một danh sách trong ngôn ngữ lập trình Python. Có một vài cách để đạt được điều này, và trong bài viết này, bạn sẽ học ba trong số các kỹ thuật khác nhau được sử dụng để tìm chỉ số của một yếu tố danh sách trong Python. Ba kỹ thuật được sử dụng là: Cụ thể, đây là những gì chúng tôi sẽ bao quát về chiều sâu: Danh sách là một loại dữ liệu tích hợp trong Python và một trong những cấu trúc dữ liệu mạnh mẽ nhất. Chúng hoạt động như các container và lưu trữ nhiều mục, thường liên quan, dưới cùng tên biến. Các mặt hàng được đặt và đặt bên trong ngoặc vuông,
8,next[x for x in lst if ...]
9,next[x for x in lst if ...]
7.next[x for x in lst if ...]
8 để tìm chỉ mục của một mục 1. Sử dụng các tham số tùy chọn với phương thức next[x for x in lst if ...]
8next[x for x in lst if ...]
1.Use optional parameters with the
8 methodnext[x for x in lst if ...]
9 để nhận các chỉ số của tất cả các lần xuất hiện của một mục trong danh sáchnext[x for x in lst if ...]
7 để nhận các chỉ số của tất cả các lần xuất hiện của một mục trong danh sáchnext[x for x in lst if ...]
Danh sách trong Python là gì?
5. Mỗi vật phẩm bên trong dấu ngoặc vuông được phân tách bằng dấu phẩy, next[[x for x in lst if ...], [default value]]
6.next[[x for x in lst if ...], [default value]]
# a list called 'my_information' that contains strings and numbers
my_information = ["John Doe", 34, "London", 1.76]
Từ ví dụ trên, bạn có thể thấy rằng danh sách có thể chứa các mục thuộc bất kỳ loại dữ liệu nào, nghĩa là các yếu tố danh sách có thể không đồng nhất.
Không giống như các mảng chỉ lưu trữ các mục cùng loại, danh sách cho phép linh hoạt hơn.
Danh sách cũng có thể thay đổi, có nghĩa là chúng có thể thay đổi và năng động. Danh sách các mục có thể được cập nhật, các mục mới có thể được thêm vào danh sách và bất kỳ mục nào cũng có thể được xóa bất cứ lúc nào trong suốt cuộc đời của chương trình.
Tổng quan về việc lập chỉ mục trong Python
Như đã đề cập, danh sách là một bộ sưu tập các mặt hàng. Cụ thể, chúng là một bộ sưu tập các mặt hàng được đặt hàng và chúng bảo tồn thứ tự đặt ra và xác định cho hầu hết các phần.
Mỗi phần tử bên trong một danh sách sẽ có một vị trí duy nhất xác định nó.
Vị trí đó được gọi là chỉ mục của phần tử.
Các chỉ số trong Python, và trong tất cả các ngôn ngữ lập trình, bắt đầu tại
next[[x for x in lst if ...], [default value]]
7 chứ không phải next[[x for x in lst if ...], [default value]]
8.not next[[x for x in lst if ...], [default value]]
8.Chúng ta hãy xem danh sách được sử dụng trong phần trước:
my_information = ["John Doe", 34, "London", 1.76]
Danh sách không được chỉ số và đếm bắt đầu từ
next[[x for x in lst if ...], [default value]]
7.Phần tử danh sách đầu tiên,
[1,2,3].index[2] # => 1
[1,2,3].index[4] # => ValueError
0, có chỉ số là next[[x for x in lst if ...], [default value]]
7. Phần tử danh sách thứ hai, [1,2,3].index[2] # => 1
[1,2,3].index[4] # => ValueError
2, có chỉ số là next[[x for x in lst if ...], [default value]]
8. Phần tử danh sách thứ ba, [1,2,3].index[2] # => 1
[1,2,3].index[4] # => ValueError
4, có chỉ số là [1,2,3].index[2] # => 1
[1,2,3].index[4] # => ValueError
5. Phần tử danh sách Forth, [1,2,3].index[2] # => 1
[1,2,3].index[4] # => ValueError
6, có chỉ số là [1,2,3].index[2] # => 1
[1,2,3].index[4] # => ValueError
7.The second list element,
[1,2,3].index[2] # => 1
[1,2,3].index[4] # => ValueError
2, has an index of next[[x for x in lst if ...], [default value]]
8.The third list element,
[1,2,3].index[2] # => 1
[1,2,3].index[4] # => ValueError
4, has an index of [1,2,3].index[2] # => 1
[1,2,3].index[4] # => ValueError
5.The forth list element,
[1,2,3].index[2] # => 1
[1,2,3].index[4] # => ValueError
6, has an index of [1,2,3].index[2] # => 1
[1,2,3].index[4] # => ValueError
7.Các chỉ số hữu ích để truy cập các mục danh sách cụ thể có vị trí [chỉ mục] mà bạn biết.
Vì vậy, bạn có thể lấy bất kỳ yếu tố danh sách nào bạn muốn bằng cách sử dụng chỉ mục của nó.
Để truy cập một mục, trước tiên bao gồm tên của danh sách và sau đó trong các dấu ngoặc vuông bao gồm số nguyên tương ứng với chỉ mục cho mục bạn muốn truy cập.
Đây là cách bạn sẽ truy cập từng mục bằng chỉ mục của nó:
matches = [x for x in lst if fulfills_some_condition[x]]
matches = [x for x in lst if x > 6]
0Nhưng những gì về việc tìm kiếm chỉ số của một mục danh sách trong Python?
Trong các phần theo sau, bạn sẽ thấy một số cách bạn có thể tìm thấy chỉ mục của các yếu tố danh sách.
Cho đến nay bạn đã thấy cách truy cập một giá trị bằng cách tham chiếu số chỉ mục của nó.
Điều gì xảy ra mặc dù khi bạn không biết số chỉ mục và bạn đang làm việc với một danh sách lớn?
Bạn có thể đưa ra một giá trị và tìm chỉ mục của nó và theo cách đó, hãy kiểm tra vị trí mà nó có trong danh sách.
Đối với điều đó, phương pháp
next[x for x in lst if ...]
8 tích hợp của Python được sử dụng làm công cụ tìm kiếm.Cú pháp của phương thức
next[x for x in lst if ...]
8 trông như thế này:matches = [x for x in lst if fulfills_some_condition[x]]
matches = [x for x in lst if x > 6]
1Hãy phá vỡ nó:
7 là tên của danh sách bạn đang tìm kiếm.matches = filter[fulfills_some_condition, lst]
1 là phương thức tìm kiếm có ba tham số. Một tham số là bắt buộc và hai tham số còn lại là tùy chọn.[1,2,3,2].index[2] # => 1
6 là tham số cần thiết. Đó là yếu tố mà bạn đang tìm kiếm chỉ mục.matches = filter[fulfills_some_condition, lst]
3 là tham số tùy chọn đầu tiên. Đó là chỉ mục mà bạn sẽ bắt đầu tìm kiếm của mình.[1,2,3,2].index[2] # => 1
4 Tham số tùy chọn thứ hai. Đó là chỉ mục mà bạn sẽ kết thúc tìm kiếm của mình.[1,2,3,2].index[2] # => 1
Hãy xem một ví dụ chỉ bằng tham số cần thiết:
matches = [x for x in lst if fulfills_some_condition[x]]
matches = [x for x in lst if x > 6]
2Trong ví dụ trên, phương thức
next[x for x in lst if ...]
8 chỉ lấy một đối số là phần tử mà bạn đang tìm kiếm.Hãy nhớ rằng đối số bạn vượt qua là nhạy cảm trường hợp. Điều này có nghĩa là nếu bạn đã vượt qua "Python", chứ không phải "Python", bạn sẽ nhận được một lỗi là "Python" với chữ thường "P" không phải là một phần của danh sách.
Giá trị trả về là một số nguyên, là số chỉ mục của mục danh sách được truyền dưới dạng đối số cho phương thức.
Hãy xem xét một ví dụ khác:
matches = [x for x in lst if fulfills_some_condition[x]]
matches = [x for x in lst if x > 6]
3Nếu bạn thử và tìm kiếm một mục nhưng không có khớp nào trong danh sách bạn đang tìm kiếm, Python sẽ gây ra lỗi vì giá trị trả về - cụ thể nó sẽ trả về
[1,2,3,2].index[2] # => 1
6.Điều này có nghĩa là mục bạn đang tìm kiếm không tồn tại trong danh sách.
Một cách để ngăn chặn điều này xảy ra, là kết thúc cuộc gọi đến phương thức
next[x for x in lst if ...]
8 trong một khối [1,2,3,2].index[2] # => 1
8.Nếu giá trị không tồn tại, sẽ có một thông báo cho bảng điều khiển nói rằng nó không được lưu trữ trong danh sách và do đó không tồn tại.
matches = [x for x in lst if fulfills_some_condition[x]]
matches = [x for x in lst if x > 6]
4Một cách khác là kiểm tra xem mục này có nằm trong danh sách ở nơi đầu tiên không, trước khi tìm kiếm số chỉ mục của nó. Đầu ra sẽ là một giá trị boolean - nó sẽ đúng hoặc sai.
matches = [x for x in lst if fulfills_some_condition[x]]
matches = [x for x in lst if x > 6]
5Cách sử dụng các tham số tùy chọn với phương thức next[x for x in lst if ...]
8
next[x for x in lst if ...]
Chúng ta hãy xem ví dụ sau:
matches = [x for x in lst if fulfills_some_condition[x]]
matches = [x for x in lst if x > 6]
6Trong danh sách
[i for i,x in enumerate[[1,2,3,2]] if x==2] # => [1, 3]
0 có ba trường hợp của chuỗi "Python" đang được tìm kiếm.Như một cách để kiểm tra, bạn có thể làm việc ngược như trong trường hợp này, danh sách là nhỏ.
Bạn có thể đếm và tìm ra số chỉ mục của họ và sau đó tham khảo chúng như bạn đã thấy trong các phần trước:
matches = [x for x in lst if fulfills_some_condition[x]]
matches = [x for x in lst if x > 6]
7Có một ở vị trí
next[[x for x in lst if ...], [default value]]
8, một vị trí khác ở vị trí [1,2,3].index[2] # => 1
[1,2,3].index[4] # => ValueError
7 và người cuối cùng ở vị trí [i for i,x in enumerate[[1,2,3,2]] if x==2] # => [1, 3]
3.Tại sao họ không hiển thị trong đầu ra khi phương thức
next[x for x in lst if ...]
8 được sử dụng?Khi phương thức
next[x for x in lst if ...]
8 được sử dụng, giá trị trả về chỉ là sự xuất hiện đầu tiên của mục trong danh sách. Phần còn lại của các lần xuất hiện không được trả lại.first occurence of the item in the list. The rest of the occurrences are not returned.Phương thức
next[x for x in lst if ...]
8 chỉ trả về chỉ mục của vị trí mà mục xuất hiện lần đầu tiên.first
time.Bạn có thể thử chuyển các tham số
[1,2,3,2].index[2] # => 1
3 và [1,2,3,2].index[2] # => 1
4 tùy chọn cho phương thức next[x for x in lst if ...]
8.Bạn đã biết rằng lần xuất hiện đầu tiên bắt đầu tại INDEX
next[[x for x in lst if ...], [default value]]
8, vì vậy đó có thể là giá trị của tham số [1,2,3,2].index[2] # => 1
3.Đối với tham số
[1,2,3,2].index[2] # => 1
4, trước tiên bạn có thể tìm thấy độ dài của danh sách.Để tìm độ dài, hãy sử dụng hàm
# a list called 'my_information' that contains strings and numbers
my_information = ["John Doe", 34, "London", 1.76]
3:matches = [x for x in lst if fulfills_some_condition[x]]
matches = [x for x in lst if x > 6]
8Giá trị cho tham số
[1,2,3,2].index[2] # => 1
4 sau đó sẽ là độ dài của danh sách trừ 1. Chỉ số của mục cuối cùng trong danh sách luôn ít hơn một chiều dài của danh sách.Vì vậy, đặt tất cả những điều đó lại với nhau, đây là cách bạn có thể cố gắng để có được cả ba trường hợp của mục:
matches = [x for x in lst if fulfills_some_condition[x]]
matches = [x for x in lst if x > 6]
9Đầu ra vẫn chỉ trả về trường hợp đầu tiên!
Mặc dù các tham số
[1,2,3,2].index[2] # => 1
3 và [1,2,3,2].index[2] # => 1
4 cung cấp một loạt các vị trí cho tìm kiếm của bạn, giá trị trả về khi sử dụng phương thức next[x for x in lst if ...]
8 vẫn chỉ là sự xuất hiện đầu tiên của mục trong danh sách.Cách nhận các chỉ số của tất cả các lần xuất hiện của một mục trong danh sách
Sử dụng next[x for x in lst if ...]
9 để có được các chỉ số của tất cả các lần xuất hiện của một mục trong danh sách
next[x for x in lst if ...]
Chúng ta hãy lấy ví dụ tương tự mà chúng ta đã sử dụng cho đến nay.
Danh sách đó có ba lần xuất hiện của chuỗi "Python".
matches = filter[fulfills_some_condition, lst]
0Đầu tiên, tạo một danh sách mới, trống.
Đây sẽ là danh sách mà tất cả các chỉ số của "Python" sẽ được lưu trữ.
matches = filter[fulfills_some_condition, lst]
1Tiếp theo, sử dụng
next[x for x in lst if ...]
9. Đây là một cách để lặp lại [hoặc vòng lặp] thông qua danh sách và nhận từng mục trong danh sách ban đầu. Cụ thể, chúng tôi lặp qua số chỉ mục của từng mục.matches = filter[fulfills_some_condition, lst]
2Trước tiên bạn sử dụng từ khóa
my_information = ["John Doe", 34, "London", 1.76]
0.Sau đó, tạo một biến, trong trường hợp này
my_information = ["John Doe", 34, "London", 1.76]
1, sẽ hoạt động như một trình giữ chỗ cho vị trí của từng mục trong danh sách ban đầu, trong quá trình lặp lại.Tiếp theo, bạn cần chỉ định số lượng lặp được đặt mà
next[x for x in lst if ...]
9 sẽ thực hiện.Trong trường hợp này, vòng lặp sẽ lặp qua toàn bộ chiều dài của danh sách, từ đầu đến cuối. Cú pháp
my_information = ["John Doe", 34, "London", 1.76]
3 là một cách để truy cập tất cả các mục trong danh sách [i for i,x in enumerate[[1,2,3,2]] if x==2] # => [1, 3]
0.Hàm
my_information = ["John Doe", 34, "London", 1.76]
5 có một chuỗi các số chỉ định số mà nó sẽ bắt đầu đếm từ và số nó sẽ kết thúc việc đếm.Hàm
# a list called 'my_information' that contains strings and numbers
my_information = ["John Doe", 34, "London", 1.76]
3 tính toán độ dài của danh sách, vì vậy trong trường hợp này, việc đếm sẽ bắt đầu vào lúc next[[x for x in lst if ...], [default value]]
7 và kết thúc tại - nhưng không bao gồm - my_information = ["John Doe", 34, "London", 1.76]
8, là kết thúc của danh sách.Cuối cùng, bạn cần thiết lập một điều kiện logic.
Về cơ bản, bạn muốn nói: "Nếu trong quá trình lặp, giá trị tại vị trí đã cho bằng 'Python', hãy thêm vị trí đó vào danh sách mới tôi đã tạo trước đó".
Bạn sử dụng phương thức
my_information = ["John Doe", 34, "London", 1.76]
9 để thêm một phần tử vào danh sách.matches = filter[fulfills_some_condition, lst]
3Sử dụng danh sách hiểu và hàm next[x for x in lst if ...]
7 để có được các chỉ số của tất cả các lần xuất hiện của một mục trong danh sách
next[x for x in lst if ...]
Một cách khác để tìm các chỉ số của tất cả các lần xuất hiện của một mục cụ thể là sử dụng khả năng hiểu danh sách.
Danh sách hiểu là một cách để tạo một danh sách mới dựa trên một danh sách hiện có.
Dưới đây là cách bạn sẽ nhận được tất cả các chỉ số của mỗi lần xuất hiện của chuỗi "Python", sử dụng danh sách hiểu:
matches = filter[fulfills_some_condition, lst]
4Với chức năng
next[x for x in lst if ...]
7, bạn có thể lưu trữ các chỉ số của các mục đáp ứng điều kiện bạn đặt.Đầu tiên nó cung cấp một cặp [
matches = [x for x in lst if fulfills_some_condition[x]]
matches = [x for x in lst if x > 6]
02] cho mỗi phần tử trong danh sách [[i for i,x in enumerate[[1,2,3,2]] if x==2] # => [1, 3]
0] được truyền làm đối số cho hàm.next[x for x in lst if ...]
5 dành cho số chỉ mục của mục danh sách và matches = filter[fulfills_some_condition, lst]
6 dành cho chính mục danh sách.Sau đó, nó hoạt động như một bộ đếm bắt đầu đếm từ
next[[x for x in lst if ...], [default value]]
7 và tăng mỗi lần điều kiện bạn đặt được đáp ứng, chọn và di chuyển các chỉ số của các mục đáp ứng tiêu chí của bạn.Được kết hợp với sự hiểu biết danh sách, một danh sách mới được tạo với tất cả các chỉ số của chuỗi "Python".
Sự kết luận
Và bạn có nó rồi đấy! Bây giờ bạn đã biết một số cách để tìm chỉ mục của một mục và các cách để tìm các chỉ số của nhiều lần xuất hiện của một mục, trong một danh sách trong Python.
Tôi hy vọng bạn thấy bài viết này hữu ích.
Để tìm hiểu thêm về ngôn ngữ lập trình Python, hãy xem máy tính khoa học của Freecodecamp với chứng nhận Python.
Bạn sẽ bắt đầu từ những điều cơ bản và học hỏi một cách thân thiện với người mới bắt đầu. Bạn cũng sẽ xây dựng năm dự án vào cuối để đưa vào thực tế và giúp củng cố những gì bạn đã học.
Cảm ơn bạn đã đọc và mã hóa hạnh phúc!
Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu