Cách tìm tất cả chỉ mục của phần tử trong chuỗi Python

Bằng cách sử dụng toán tử type(), chúng ta có thể lấy các chỉ mục phần tử chuỗi từ danh sách, các phần tử chuỗi sẽ thuộc loại str(), vì vậy chúng ta lặp qua toàn bộ danh sách bằng vòng lặp for và trả về chỉ mục thuộc loại chuỗi

Python3




# create a list of names and marks

list1= ['sravan',

[0, 2, 3, 4, 7]
['sravan', 'harsha', 'jyothika', 'deepika', 'ramya']
0_______53_______
[0, 2, 3, 4, 7]
['sravan', 'harsha', 'jyothika', 'deepika', 'ramya']
2,
[0, 2, 3, 4, 7]
['sravan', 'harsha', 'jyothika', 'deepika', 'ramya']
4_______53_______

[0, 2, 3, 4, 7]
['sravan', 'harsha', 'jyothika', 'deepika', 'ramya']
6_______0_______7,
[0, 2, 3, 4, 7]
['sravan', 'harsha', 'jyothika', 'deepika', 'ramya']
9,
['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
[0, 2, 3, 4, 7]
1,
['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
[0, 2, 3, 4, 7]
3_______6_______4

 

['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
[0, 2, 3, 4, 7]
5

list1

 

['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
[0, 2, 3, 4, 7]
7

['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
[0, 2, 3, 4, 7]
8
['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
[0, 2, 3, 4, 7]
9_______13_______0
['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
0
2
3
4
7
1

['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
0
2
3
4
7
2

['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
0
2
3
4
7
3
['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
0
2
3
4
7
4

['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
0
2
3
4
7
3
['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
0
2
3
4
7
6
['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
0
2
3
4
7
7
['sravan', 98, 'harsha', 'jyothika', 'deepika', 78, 90, 'ramya']
0
2
3
4
7
8
[0, 2, 3, 4, 7]
['sravan', 'harsha', 'jyothika', 'deepika', 'ramya']
83
[0, 2, 3, 4, 7]
['sravan', 'harsha', 'jyothika', 'deepika', 'ramya']
84
[0, 2, 3, 4, 7]
['sravan', 'harsha', 'jyothika', 'deepika', 'ramya']
85# create a list of names and marks0 # create a list of names and marks1# create a list of names and marks2

Trong bài viết này, chúng tôi sẽ thảo luận về các cách khác nhau để lấy chỉ mục của phần tử trong danh sách trong python. Chúng ta sẽ xem cách tìm chỉ mục đầu tiên của mục trong danh sách, sau đó cách tìm chỉ mục cuối cùng của mục trong danh sách hoặc sau đó là cách lấy chỉ mục của tất cả các lần xuất hiện của một mục trong danh sách. Ngoài ra, chúng tôi cũng sẽ thảo luận về cách tìm chỉ mục của các mục trong danh sách thỏa mãn một điều kiện nhất định

con trăn. Nhận chỉ mục của mục trong Danh sách

Để tìm chỉ mục của phần tử trong danh sách trong python, chúng ta sẽ sử dụng hàm list. mục lục(),

danh sách. mục lục()

Kiểu dữ liệu danh sách của Python cung cấp phương thức này để tìm chỉ mục đầu tiên của một phần tử đã cho trong danh sách hoặc danh sách con i. e

list.index(x[, start[, end]])

Tranh luận

  • x. Mục cần tìm trong danh sách
  • bắt đầu. Nếu được cung cấp, tìm kiếm sẽ bắt đầu từ chỉ mục này. Mặc định là 0
  • kết thúc. Nếu được cung cấp, tìm kiếm sẽ kết thúc tại chỉ mục này. Mặc định là cuối danh sách

trả lại. Chỉ số dựa trên số 0 về lần xuất hiện đầu tiên của phần tử đã cho trong danh sách hoặc phạm vi. Nếu không có phần tử nào như vậy thì nó sẽ tăng ValueError

Đọc thêm

  • Lấy số phần tử trong danh sách bằng Python
  • Kiểm tra xem có giá trị nào trong Danh sách Python lớn hơn giá trị không
  • con trăn. Kiểm tra xem danh sách có trống hay không - ( Cập nhật 2020 )
  • Xóa danh sách Python()

Tâm điểm. danh sách. index() trả về chỉ mục theo cách dựa trên 0 tôi. e. phần tử đầu tiên trong danh sách có chỉ số 0 và phần tử thứ hai trong chỉ mục là 1

Hãy sử dụng chức năng này để tìm các chỉ mục của một mục nhất định trong danh sách,

Giả sử chúng ta có một danh sách các chuỗi,

# List of strings
list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']

Bây giờ, hãy tìm chỉ mục xuất hiện đầu tiên của mục 'Ok' trong danh sách,

elem = 'Ok'

# Find index position of first occurrence of 'Ok' in the list
index_pos = list_of_elems.index(elem)

print(f'First Index of element "{elem}" in the list : ', index_pos)

đầu ra

First Index of element "Ok" in the list :  1

Như trong danh sách. index() chúng tôi không cung cấp đối số bắt đầu và kết thúc, vì vậy nó đã tìm kiếm 'Ok' trong danh sách đầy đủ. Nhưng đã trả lại vị trí chỉ mục ngay khi nó gặp sự xuất hiện đầu tiên của 'Ok' trong danh sách

Nhưng nếu mục được tìm kiếm không tồn tại trong danh sách, thì index() sẽ tăng ValueError. Vì vậy, chúng ta cần phải sẵn sàng cho loại kịch bản này. Ví dụ,

list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']

elem = 'Why'

try:
    index_pos = list_of_elems.index(elem)
    print(f'First Index of element "{elem}" in the list : ', index_pos)
except ValueError as e:
    print(f'Element "{elem}" not found in the list: ', e)

đầu ra

Element "Why" not found in the list:  'Why' is not in list

Vì 'Tại sao' không có trong danh sách, nên danh sách. index() tăng ValueError

con trăn. Tìm chỉ mục của mục trong danh sách bằng vòng lặp for

Thay vì sử dụng danh sách. index(), chúng ta có thể lặp qua các phần tử danh sách theo vị trí chỉ mục, để tìm chỉ mục của phần tử trong danh sách i. e

list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']

elem = 'is'

pos = -1
# Iterate over list items by index pos
for i in range(len(list_of_elems)):
    # Check if items matches the given element
    if list_of_elems[i] == elem:
        pos = i
        break

if pos > -1:
    print(f'Index of element "{elem}" in the list is: ', pos)
else:
    print(f'Element "{elem}" does not exist in the list: ', pos)

đầu ra

Index of element "is" in the list is:  2

con trăn. Nhận chỉ mục cuối cùng của mục trong danh sách

Để lấy chỉ mục cuối cùng của một mục trong danh sách, chúng ta chỉ cần đảo ngược nội dung của danh sách và sau đó sử dụng hàm index() để lấy vị trí chỉ mục. Nhưng điều đó sẽ đưa ra chỉ mục của phần tử từ lần trước. Nơi chúng tôi muốn chỉ mục xuất hiện lần cuối của phần tử từ đầu. Hãy xem làm thế nào để làm điều đó,

list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test']

elem = 'Ok'

try:
    # Get last index of item in list
    index_pos = len(list_of_elems) - list_of_elems[::-1].index(elem) - 1
    print(f'Last Index of element "{elem}" in the list : ', index_pos)
except ValueError as e:
    print(f'Element "{elem}" not found in the list: ', e)

đầu ra

Last Index of element "Ok" in the list :  3

Nó đưa ra chỉ số về lần xuất hiện cuối cùng của chuỗi 'Ok' trong danh sách

Đến đây chúng ta đã biết cách tìm chỉ số xuất hiện đầu tiên của một mục trong danh sách. Nhưng nếu có nhiều lần xuất hiện của một mục trong danh sách và chúng tôi muốn biết chỉ mục của chúng thì sao?

Tìm chỉ mục của tất cả các lần xuất hiện của một mục trong danh sách

Giả sử chúng ta có một danh sách các chuỗi i. e

# List of strings
list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']
0

Bây giờ chúng tôi muốn tìm chỉ mục của tất cả các lần xuất hiện của 'Ok' trong danh sách, như thế này,

# List of strings
list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']
1

Chúng là những cách khác nhau để làm điều đó, hãy xem từng cái một

Tìm tất cả các chỉ mục của một mục trong danh sách bằng cách sử dụng danh sách. mục lục()

Như danh sách. index() trả về chỉ số xuất hiện đầu tiên của một mục trong danh sách. Vì vậy, để tìm các lần xuất hiện khác của mục trong danh sách, chúng tôi sẽ gọi danh sách. index() lặp đi lặp lại với các đối số phạm vi. Chúng tôi đã tạo một chức năng sử dụng danh sách. index() và trả về một danh sách các chỉ mục của tất cả các lần xuất hiện của một mục trong danh sách đã cho i. e

# List of strings
list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']
2

Hàm này gọi danh sách. index() trong một vòng lặp. Ban đầu, nó tìm kiếm mục từ chỉ mục thứ 0 trong danh sách. Nhưng khi nó gặp mục, thì từ lần lặp tiếp theo, nó sẽ tìm từ vị trí đó trở đi cho đến khi đạt đến cuối danh sách. Nó giữ các chỉ mục của các phần tử phù hợp trong một danh sách riêng biệt và cuối cùng trả về danh sách đó

Bây giờ, hãy sử dụng chức năng trên để tìm tất cả các chỉ mục của 'Ok' trong danh sách,

# List of strings
list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']
3

đầu ra

# List of strings
list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']
4

Tìm trực tiếp tất cả các chỉ mục của một mục trong danh sách trong khi lặp lại

Thay vì sử dụng danh sách. index(), chúng ta có thể lặp lại trực tiếp các phần tử danh sách bằng cách lập chỉ mục bằng cách sử dụng hàm range(). Sau đó, đối với từng yếu tố, nó sẽ kiểm tra xem nó có khớp với mặt hàng của chúng tôi hay không. Nếu có thì hãy giữ chỉ mục của nó trong danh sách tôi. e

# List of strings
list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']
5

đầu ra

# List of strings
list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']
4

giải pháp đơn giản. Nhưng hãy xem xét một số lựa chọn thay thế dòng đơn,

Sử dụng Danh sách hiểu để tìm tất cả các chỉ mục của một mục trong danh sách

Khái niệm tương tự nhưng thay vì sử dụng vòng lặp for để lặp lại, chúng ta có thể đạt được điều tương tự bằng cách sử dụng hiểu danh sách i. e

# List of strings
list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']
7

đầu ra

# List of strings
list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']
4

Sử dụng more_itertools. định vị () để tìm tất cả các chỉ mục của một mục trong danh sách

# List of strings
list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']
9

định vị () mang lại chỉ mục của từng mục trong danh sách mà hàm gọi lại đã cho trả về True

Để tìm tất cả các lần xuất hiện của mục 'Ok' trong danh sách, chúng tôi sẽ chuyển một hàm lambda để xác định vị trí(), hàm này sẽ kiểm tra xem mục đó có phải là 'Ok' hay không. e

elem = 'Ok'

# Find index position of first occurrence of 'Ok' in the list
index_pos = list_of_elems.index(elem)

print(f'First Index of element "{elem}" in the list : ', index_pos)
0

đầu ra

# List of strings
list_of_elems = ['Hello', 'Ok', 'is', 'Ok', 'test', 'this', 'is', 'a', 'test', 'Ok']
4

định vị () mang lại các chỉ mục của các phần tử trong danh sách mà vị từ đã cho là Đúng. Vì vậy, trong trường hợp của chúng tôi, nó mang lại các chỉ số của 'Ok' trong danh sách. Chúng tôi đã thu thập các chỉ mục đó trong một danh sách

Tìm chỉ mục của các mục trong danh sách thỏa mãn các điều kiện nhất định

Giả sử chúng ta muốn tìm chỉ mục của các mục trong danh sách thỏa mãn một số điều kiện như chỉ mục của các mục trong danh sách các chuỗi có độ dài nhỏ hơn 3. Để làm điều đó, chúng tôi đã tạo một chức năng chung i. e

elem = 'Ok'

# Find index position of first occurrence of 'Ok' in the list
index_pos = list_of_elems.index(elem)

print(f'First Index of element "{elem}" in the list : ', index_pos)
2

Hàm này chấp nhận danh sách các phần tử và hàm gọi lại làm đối số. Đối với mỗi phần tử, nó gọi hàm gọi lại và nếu hàm gọi lại () trả về True thì nó sẽ giữ chỉ mục của phần tử đó trong một danh sách mới. Cuối cùng, nó trả về các chỉ mục của các mục trong danh sách mà callback() đã trả về True

Hãy gọi hàm này để tìm chỉ mục của các mục trong danh sách các chuỗi có độ dài nhỏ hơn 3 i. e