Trong bài viết này, bạn sẽ học cách tìm chỉ mục của một phần tử có trong danh sách bằng ngôn ngữ lập trình Python.
Có một số cách để đạt được điều này và trong bài viết này, bạn sẽ tìm hiểu ba trong số các kỹ thuật khác nhau được sử dụng để tìm chỉ mục của phần tử danh sách trong Python.
Ba kỹ thuật được sử dụng là:
- tìm chỉ mục bằng cách sử dụng
index()
phương pháp liệt kê, - sử dụng một
for-loop
, - và cuối cùng, sử dụng khả năng hiểu danh sách và
enumerate()
chức năng.
Cụ thể, đây là những gì chúng tôi sẽ đề cập sâu:
- Tổng quan về danh sách trong Python
- Cách lập chỉ mục hoạt động
- Sử dụng
index()
phương pháp tìm chỉ mục của một mục
1.Sử dụng các tham số tùy chọn vớiindex()
phương pháp - 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 một
for-loop
để lấy 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 khả năng hiểu danh sách và
enumerate()
chức năng lấy 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 một
Danh sách trong Python là gì?
Danh sách là một kiểu dữ liệu tích hợp sẵn trong Python và là 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 thùng chứa và lưu trữ nhiều mục, thường có liên quan với nhau, dưới cùng một tên biến.
Các mục được đặt và đặt bên trong dấu ngoặc vuông, []
. Mỗi mục bên trong dấu ngoặc vuông được phân tách bằng dấu phẩy, ,
.
# 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 phần tử danh sách có thể không đồng nhất.
Không giống như 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. Các mục danh sách 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ể bị xóa bất kỳ lúc nào trong suốt vòng đời của chương trình.
Tổng quan về lập chỉ mục trong Python
Như đã đề cập, danh sách là một tập hợp các mục. Cụ thể, chúng là một bộ sưu tập các mục được sắp xếp theo thứ tự và chúng bảo toàn phần lớn thứ tự được thiết lập và xác định đó.
Mỗi phần tử bên trong danh sách sẽ có một vị trí duy nhất xác định nó.
Vị trí đó được gọi là vị trí của phần tử mục lục.
Các chỉ mục trong Python và trong tất cả các ngôn ngữ lập trình, hãy bắt đầu tại và không phải
1
.
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 này không được lập chỉ mục và việc đếm bắt đầu từ .
Phần tử danh sách đầu tiên, "John Doe"
có chỉ số là .
Phần tử danh sách thứ hai, 34
có chỉ số là 1
.
Phần tử danh sách thứ ba, "London"
có chỉ số là 2
.
Phần tử danh sách thứ tư, 1.76
có chỉ số là 3
.
Các chỉ mục 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ỳ thành phần 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 hãy nhập tên của danh sách, sau đó nhập số nguyên tương ứng với chỉ mục của mục bạn muốn truy cập trong dấu ngoặc vuông.
Đây là cách bạn sẽ truy cập từng mục bằng cách sử dụng chỉ mục của nó:
my_information = ["John Doe", 34, "London", 1.76]
print(my_information[0])
print(my_information[1])
print(my_information[2])
print(my_information[3])
#output
#John Doe
#34
#London
#1.76
Nhưng những gì về Phát hiện chỉ mục của một mục danh sách trong Python?
Trong các phần tiếp theo, 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 phần tử danh sách.
Tìm Chỉ mục của một Mục bằng Danh sách index()
Phương thức trong Python
Cho đến giờ, bạn đã biết 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ì sẽ xảy ra 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 đó kiểm tra vị trí của nó trong danh sách.
Đối với điều đó, tích hợp sẵn của Python index()
phương pháp được sử dụng như một công cụ tìm kiếm.
Cú pháp của index()
phương pháp trông như thế này:
my_list.index(item, start, end)
Hãy chia nhỏ nó ra:
my_list
là tên của danh sách bạn đang tìm kiếm..index()
là phương pháp 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.item
là tham số bắt buộc. Đó là phần tử có chỉ số mà bạn đang tìm kiếm.start
là tham số tùy chọn đầu tiên. Đó là chỉ mục nơi bạn sẽ bắt đầu tìm kiếm của mình.end
tham số tùy chọn thứ hai. Đó là chỉ mục nơi bạn sẽ kết thúc tìm kiếm của mình.
Hãy xem một ví dụ chỉ sử dụng tham số bắt buộc:
programming_languages = ["JavaScript","Python","Java","C++"]
print(programming_languages.index("Python"))
#output
#1
Trong ví dụ trên, các index()
phương thức chỉ nhận một đối số là phần tử có chỉ mục mà bạn đang tìm kiếm.
Hãy nhớ rằng đối số bạn vượt qua là trường hợp nhạy cảm. Đ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 lỗi là “python” với chữ “p” viết thường không có trong 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:
programming_languages = ["JavaScript","Python","Java","C++"]
print(programming_languages.index("React"))
#output
#line 3, in <module>
# print(programming_languages.index("React"))
#ValueError: 'React' is not in list
Nếu bạn thử và tìm kiếm một mục nhưng không có kết quả nào trong danh sách mà bạn đang tìm kiếm, Python sẽ đưa ra một lỗi dưới dạng giá trị trả về – cụ thể là nó sẽ trả về một ValueError
.
Đ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 index()
phương pháp trong một try/except
chặn.
Nếu giá trị không tồn tại, sẽ có một thông báo đến bảng điều khiển nói rằng nó không được lưu trong danh sách và do đó không tồn tại.
programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]
try:
print(programming_languages.index("React"))
except ValueError:
print("That item does not exist")
#output
#That item does not exist
Một cách khác là kiểm tra xem mục đó có nằm trong danh sách ngay từ đầu hay không, trước khi tìm số chỉ mục của nó. Đầu ra sẽ là một giá trị Boolean – nó sẽ là Đúng hoặc Sai.
programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]
print("React" in programming_languages)
#output
#False
Cách sử dụng các tham số tùy chọn với index()
Phương pháp
Hãy cùng xem ví dụ sau:
programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]
print(programming_languages.index("Python"))
#output
#1
Trong danh sách programming_languages
có ba phiên bản 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 ngược lại vì trong trường hợp này danh sách nhỏ.
Bạn có thể đếm và tìm ra số chỉ mục của chúng, sau đó tham khảo chúng như bạn đã thấy trong các phần trước:
programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]
print(programming_languages[1])
print(programming_languages[3])
print(programming_languages[5])
#output
#Python
#Python
#Python
Có một ở vị trí 1
một cái khác ở vị trí 3
và cái cuối cùng ở vị trí 5
.
Tại sao chúng không hiển thị ở đầu ra khi index()
phương pháp được sử dụng?
Khi mà index()
phương thức được sử dụng, giá trị trả về chỉ là lần 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.
Các index()
phương thức chỉ trả về chỉ mục của vị trí mà mục xuất hiện đầu tiên thời gian.
Bạn có thể thử vượt qua tùy chọn start
và end
thông số để index()
phương pháp.
Bạn đã biết rằng lần xuất hiện đầu tiên bắt đầu tại chỉ mục 1
vì vậy đó có thể là giá trị của start
tham số.
Cho end
tham số đầu tiên bạn có thể tìm thấy độ dài của danh sách.
Để tìm chiều dài, sử dụng len()
chức năng:
print(len(programming_languages))
#output is 6
giá trị cho end
khi đó tham số sẽ là độ dài của danh sách trừ đi 1. Chỉ mục của mục cuối cùng trong danh sách luôn nhỏ hơn độ dài của danh sách một đơn vị.
Vì vậy, kết hợp tất cả những điều đó lại với nhau, đây là cách bạn có thể cố gắng lấy cả ba phiên bản của mục:
programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]
print(programming_languages.index("Python",1,5))
#output
#1
Đầu ra vẫn chỉ trả về phiên bản đầu tiên!
Mặc dù start
và end
tham số 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 index()
phương thức vẫn chỉ là lần xuất hiện đầu tiên của mục trong danh sách.
Cách lấy 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 một for-loop
để lấy 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
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”.
programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]
Đầu tiên, tạo một danh sách trống mới.
Đây sẽ là danh sách lưu trữ tất cả các chỉ số của “Python”.
programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]
python_indices = []
Tiếp theo, sử dụng một for-loop
. Đây là một cách để lặp lại (hoặc lặp) qua danh sách và lấy từng mục trong danh sách ban đầu. Cụ thể, chúng tôi lặp lại số chỉ mục của từng mục.
programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]
python_indices = []
for programming_language in range(len(programming_languages)):
Đầu tiên bạn sử dụng for
từ khóa.
Sau đó tạo một biến, trong trường hợp này programming_language
sẽ hoạt động như một trình giữ chỗ cho vị trí của từng mục trong danh sách gốc, trong quá trình lặp lại.
Tiếp theo, bạn cần chỉ định số lần lặp đã đặt for-loop
nên 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 range(len(programming_languages))
là một cách để truy cập tất cả các mục trong danh sách programming_languages
.
Các range()
hàm lấy một dãy số xác định số mà nó sẽ bắt đầu đếm và số mà nó sẽ kết thúc quá trình đếm.
Các len()
hàm 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 từ và kết thúc tại – nhưng không bao gồm –
6
đó là phần cuối của danh sách.
Cuối cùng, bạn cần đặt một điều kiện hợp lý.
Về cơ bản, bạn muốn nói: “Nếu trong quá trình lặp lại, giá trị tại vị trí nhất định bằng ‘Python’, hãy thêm vị trí đó vào danh sách mới mà tôi đã tạo trước đó”.
Bạn sử dụng append()
phương thức thêm phần tử vào danh sách.
programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]
python_indices = []
for programming_language in range(len(programming_languages)):
if programming_languages[programming_language] == "Python":
python_indices.append(programming_language)
print(python_indices)
#output
#[1, 3, 5]
Sử dụng Danh sách Hiểu và enumerate()
Hàm lấy 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
Một cách khác để tìm 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.
Hiểu danh sách là một cách để tạo danh sách mới dựa trên danh sách hiện có.
Đâ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 khả năng hiểu danh sách:
programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]
python_indices = [index for (index, item) in enumerate(programming_languages) if item == "Python"]
print(python_indices)
#[1, 3, 5]
với enumerate()
bạn có thể lưu 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 (index, item
) cho từng phần tử trong danh sách (programming_languages
) được truyền dưới dạng đối số cho hàm.
index
là cho số chỉ mục của mục danh sách và item
là 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ừ và tăng dần mỗi khi đ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ùng với khả năng hiểu danh sách, một danh sách mới được tạo với tất cả các chỉ mục của chuỗi “Python”.
Phần 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ách tìm chỉ mục của nhiều lần xuất hiện của một mục trong danh sách bằng Python.
Tôi hy vọng bạn tìm 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 Chứng chỉ Máy tính Khoa học với Python của freeCodeCamp.
Bạn sẽ bắt đầu từ những điều cơ bản và học theo cách tương tác và thân thiện với người mới bắt đầu. Cuối cùng, bạn cũng sẽ xây dựng năm dự án để đưa vào thực tế và giúp củng cố những gì bạn đã học được.
Cảm ơn đã đọc và mã hóa hạnh phúc!