Tìm chỉ mục của nhiều phần tử trong mảng python

Trong hướng dẫn này, bạn sẽ học cách sử dụng Python để tìm chỉ mục danh sách của tất cả các lần xuất hiện của một phần tử. Trong nhiều trường hợp, Python giúp việc tìm chỉ mục đầu tiên của một phần tử trong danh sách trở nên đơn giản. Tuy nhiên, vì danh sách Python có thể chứa các mục trùng lặp, nên có thể hữu ích khi tìm tất cả các chỉ số của một phần tử trong danh sách

Đến cuối hướng dẫn này, bạn sẽ học được

  • Cách tìm chỉ số của tất cả các lần xuất hiện của một phần tử trong danh sách Python bằng cách sử dụng
    • Đối với các vòng lặp,
    • Danh sách hiểu,
    • NumPy và
    • more_itertools
  • Phương pháp nào nhanh nhất

Bắt đầu nào

Mục lục

Cách chỉ số danh sách Python hoạt động

Trước khi tìm hiểu cách lấy vị trí chỉ mục của tất cả các phần tử trong danh sách Python, hãy dành một chút thời gian để hiểu cách danh sách Python được lập chỉ mục. Vì danh sách Python là các đối tượng chứa có thứ tự, nên thứ tự của chúng vẫn giữ nguyên trừ khi nó bị thay đổi rõ ràng

Các chỉ số danh sách Python bắt đầu từ 0 và tiếp tục đến hết độ dài của danh sách trừ đi một. Hình ảnh bên dưới cho thấy cách các chỉ mục danh sách này hoạt động trong Python

Giải thích lập chỉ mục danh sách Python

Trong phần sau, bạn sẽ học cách sử dụng phương thức list

# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
2 để tìm chỉ mục của một phần tử trong danh sách

Phương thức lập chỉ mục danh sách Python hoạt động như thế nào

Danh sách Python

# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
2 có ba tham số

  1. Phần tử cần tìm,
  2. Chỉ mục để bắt đầu tìm kiếm và
  3. Chỉ số để tìm kiếm lên đến

Đối số bắt buộc duy nhất là phần tử cần tìm kiếm. Theo mặc định, Python sẽ tìm kiếm trong toàn bộ danh sách, trừ khi có thông báo rõ ràng khác

Chúng ta hãy xem phương pháp này trông như thế nào

# The list.index[] Method
list.index[
    value=,     # The value to search for
    start=,     # The index to start at
    stop=       # The index to end at
]

Hãy xem một ví dụ. Chúng ta có thể tải một danh sách với các phần tử khác nhau trong đó và tìm chỉ mục của phần tử bằng phương thức

# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
2

# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0

Trong ví dụ trên, chúng tôi đã áp dụng phương pháp

# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
2 trong danh sách của mình để tìm chỉ mục của phần tử
# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
0. Phương thức trả về giá trị
# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
1, nghĩa là item tồn tại ở vị trí thứ 0. Tuy nhiên, chúng tôi biết rằng giá trị tồn tại nhiều lần trong danh sách

Tại sao phương thức không trả về nhiều hơn chỉ số đầu tiên? . Ngay cả khi một mục tồn tại nhiều lần, chỉ phiên bản đầu tiên được trả về

Trong các phần sau, bạn sẽ tìm hiểu cách lấy vị trí chỉ mục của tất cả các lần xuất hiện của một phần tử trong danh sách

Cách lấy chỉ mục của tất cả các lần xuất hiện của phần tử trong danh sách Python bằng vòng lặp For và liệt kê

Một trong những cách cơ bản nhất để có được vị trí chỉ mục của tất cả các lần xuất hiện của một phần tử trong danh sách Python là sử dụng vòng lặp for và hàm liệt kê Python. Hàm liệt kê được sử dụng để lặp lại một đối tượng và trả về cả chỉ mục và phần tử

Vì điều này, chúng tôi có thể kiểm tra xem phần tử có khớp với phần tử chúng tôi muốn tìm hay không. Nếu có, chúng ta có thể thêm vị trí chỉ mục vào danh sách khác. Hãy xem cách nó hoạt động với một ví dụ

# Using enumerate to Find Index Positions
a_list = [1,2,3,4,1,2,1,2,3,4]
def find_indices[list_to_check, item_to_find]:
    indices = []
    for idx, value in enumerate[a_list]:
        if value == item_to_find:
            indices.append[idx]
    return indices

print[find_indices[a_list, 1]]

# Returns: [0, 4, 6]

Hãy phá vỡ những gì chúng tôi đã làm ở đây

  1. Chúng tôi đã định nghĩa một hàm lấy danh sách và phần tử làm đầu vào
  2. Sau đó, hàm lặp qua retult của hàm
    # Using the .index[] Method
    a_list = [1,2,3,4,1,2,1,2,3,4]
    print[a_list.index[1]]
    
    # Returns: 0
    2
  3. Nếu giá trị của mặt hàng khớp với mặt hàng chúng tôi đang tìm kiếm, chỉ mục tương ứng sẽ được thêm vào danh sách
  4. Cuối cùng, danh sách tất cả các chỉ số được trả về

Cách lấy chỉ mục của tất cả các lần xuất hiện của phần tử trong danh sách Python với more_itertools

Thư viện

# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
3 tích hợp đi kèm với một số chức năng hữu ích. Một trong những chức năng này là chức năng
# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
4 có thể lặp lại và một chức năng để đánh giá dựa trên

Để tìm vị trí chỉ mục của tất cả các phần tử khớp với một phần tử, chúng ta có thể sử dụng hàm lambda để kiểm tra xem mục đó có bằng với mục mà chúng ta muốn kiểm tra hay không

Hãy xem một ví dụ

________số 8

Hãy phá vỡ những gì chúng tôi đã làm ở đây

  1. Chúng tôi đã định nghĩa một hàm lấy cả danh sách và phần tử để tìm kiếm
  2. Hàm sử dụng hàm
    # Using the .index[] Method
    a_list = [1,2,3,4,1,2,1,2,3,4]
    print[a_list.index[1]]
    
    # Returns: 0
    4 để sử dụng danh sách chúng tôi muốn tìm kiếm và hàm lambda kiểm tra xem mỗi mục có bằng với giá trị mà chúng tôi đang tìm kiếm không
  3. Cuối cùng, hàm trả về một danh sách kết quả

Cách lấy chỉ mục của tất cả các lần xuất hiện của phần tử trong danh sách Python với Numpy

NumPy làm cho quá trình tìm tất cả các vị trí chỉ mục của một phần tử trong danh sách rất dễ dàng và nhanh chóng. Điều này có thể được thực hiện bằng cách sử dụng hàm

# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
6. Hàm
# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
6 trả về vị trí chỉ mục của tất cả các mục trong một mảng khớp với một giá trị đã cho

Hãy xem một ví dụ

# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
2

Hãy phá vỡ những gì chúng tôi đã làm ở đây

  1. Chúng tôi đã tạo một hàm lấy một danh sách và một phần tử để tìm
  2. Danh sách được chuyển đổi thành một mảng có nhiều mảng
  3. Hàm
    # Using the .index[] Method
    a_list = [1,2,3,4,1,2,1,2,3,4]
    print[a_list.index[1]]
    
    # Returns: 0
    6 được sử dụng để đánh giá mảng đối với mục của chúng tôi
  4. Chúng tôi trả về chỉ số 0 của mảng kết quả đó
  5. Chúng tôi chuyển đổi mảng đó thành một danh sách

Cách lấy chỉ mục của tất cả các lần xuất hiện của phần tử trong danh sách Python với khả năng hiểu danh sách

Trong phần này, chúng ta sẽ xem cách sử dụng khả năng hiểu danh sách để trả về danh sách các chỉ số của một phần tử trong danh sách. Phương thức này hoạt động giống như phương thức đầu tiên, vòng lặp for, ngoại trừ nó sử dụng cách hiểu danh sách

Hãy xem cách chúng ta có thể chuyển đổi vòng lặp for thành cách hiểu danh sách

# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
4

Phương thức hiển thị ở trên rõ ràng và dễ đọc hơn nhiều so với vòng lặp for. Trong phần tiếp theo, chúng ta sẽ xem các phương pháp khác nhau này so sánh như thế nào về tốc độ

Phương pháp nào nhanh nhất để lấy chỉ mục của tất cả các lần xuất hiện của một phần tử trong danh sách Python

Bảng dưới đây chia nhỏ thời gian mỗi phương pháp mất để tìm các chỉ số của tất cả các lần xuất hiện trong danh sách một trăm triệu phần tử

MethodThời gian để thực thi vòng lặp For và
# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
24. 97 giây more_itertools ________ 147. 08 giâynumpy
# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
66. 05 giâyHiểu danh sách và
# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
24. 69 giâyThời gian thực hiện của từng phương thức này

Chúng ta có thể thấy rằng phương pháp hiểu danh sách là nhanh nhất. Phương pháp này không chỉ nhanh nhất mà còn rất dễ đọc và không yêu cầu các gói bổ sung

Phần kết luận

Trong hướng dẫn này, bạn đã học cách tìm vị trí chỉ mục của tất cả các lần xuất hiện của một phần tử trong danh sách Python. Bạn đã học cách thực hiện việc này bằng hàm Python

# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
2 sử dụng cả vòng lặp for và khả năng hiểu danh sách. Bạn cũng đã học cách sử dụng hàm numpy
# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
6 để làm và hàm more_itertools
# Using the .index[] Method
a_list = [1,2,3,4,1,2,1,2,3,4]
print[a_list.index[1]]

# Returns: 0
4

Chủ Đề