Câu trả lời:
>>> s = "the dude is a cool dude"
>>> s.find('dude')
4
istừ trong câu this is a cool dudethì sao? Tôi đã thử phương thức find nhưng nó trả về chỉ số 2 thay vì 5. Làm thế nào để tôi đạt được điều này bằng cách sử dụng find ()?
indexvàfindBên cạnh findphương pháp là có index. findvà indexcả hai mang lại kết quả tương tự: trở về vị trí của sự xuất hiện đầu tiên, nhưng nếu không có gì được tìm thấy indexsẽ nâng cao một ValueErrorkhi findlợi nhuận -1. Tốc độ, cả hai đều có kết quả điểm chuẩn giống nhau.
s.find(t) #returns: -1, or index where t starts in s
s.index(t) #returns: Same as find, but raises ValueError if t is not in s
rfindvà rindex:Nói chung, find và index trả về chỉ mục nhỏ nhất nơi chuỗi nhập vào bắt đầu
rfindvàrindextrả về chỉ mục lớn nhất nơi nó bắt đầu Hầu hết các thuật toán tìm kiếm chuỗi tìm kiếm từ trái sang phải , vì vậy các hàm bắt đầu bằngrchỉ ra rằng tìm kiếm xảy ra từ phải sang trái .
Vì vậy, trong trường hợp khả năng của yếu tố bạn đang tìm kiếm gần kết thúc hơn là bắt đầu danh sách, rfindhoặc rindexsẽ nhanh hơn.
s.rfind(t) #returns: Same as find, but searched right to left
s.rindex(t) #returns: Same as index, but searches right to left
Nguồn: Python: Hướng dẫn khởi động nhanh bằng hình ảnh, Toby Donaldson
input_string = "this is a sentence"và nếu chúng ta muốn tìm sự xuất hiện đầu tiên của từ isthì nó có hoạt động không? # first occurence of word in a sentence input_string = "this is a sentence" # return the index of the word matching_word = "is" input_string.find("is")
để thực hiện điều này theo cách thuật toán, bằng cách không sử dụng bất kỳ hàm in sẵn nào của python. Điều này có thể được thực hiện như
def find_pos(string,word):
for i in range(len(string) - len(word)+1):
if string[i:i+len(word)] == word:
return i
return 'Not Found'
string = "the dude is a cool dude"
word = 'dude1'
print(find_pos(string,word))
# output 4
def find_pos(chaine,x):
for i in range(len(chaine)):
if chaine[i] ==x :
return 'yes',i
return 'no'
-1nếu không được tìm thấy