2011-10-05 35 views
7

Giả sử tôi phải tìm từng chỉ số của chữ 'e' trong từ "internet":index Finding trong những yếu tố giống nhau trong một danh sách

letter = 'e' 
word = 'internet' 
idx = word.index(letter) 

Nhưng mã này chỉ cung cấp cho các chỉ số đầu tiên. Làm thế nào tôi có thể tìm thấy phần còn lại của họ?

+2

Dĩ nhiên 'từ' đây là một 'chuỗi', không một 'danh sách'. – Johnsyweb

+0

Curiosity buộc tôi phải hỏi, tại sao bạn muốn các chỉ mục? –

+1

Vâng, sai lầm của tôi. Tất nhiên là một chuỗi ... Tôi đang mã hóa trò chơi treo cổ. – markiisi

Trả lời

6

Mark's answer là tốt hơn cho một chữ cái. Tôi đang thêm điều này trong trường hợp chuỗi con thực của bạn dài hơn một ký tự đơn.

Nếu bạn muốn sử dụng str.index(), nó có thể mất một vị trí tùy chọn start và sẽ raise một ValueError nếu chuỗi con mong muốn không được tìm thấy:

>>> letter = 'e' 
>>> word = 'internet' 
>>> last_index = -1 
>>> while True: 
...  try: 
...   last_index = word.index(letter, last_index + 1) 
...   print last_index 
...  except ValueError: 
...   break 
... 
3 
6 
+2

Nếu bạn định sử dụng điều này, tôi khuyên bạn nên gắn nó vào một chức năng tạo ra các chỉ mục. – yak

+0

@yak: hoàn toàn đồng ý. Tôi chỉ đưa ra một ví dụ cơ bản. – Johnsyweb

0

Hãy thử điều này:

word = 'internet' 
letter = 'e' 
[i for i in xrange(len(word)) if word[i] == letter] 
Các vấn đề liên quan