在列表中查找相同元素的索引

7 投票
3 回答
4779 浏览
提问于 2025-04-17 03:42

假设我需要在单词“internet”中找到字母'e'的每一个位置:

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

但是这段代码只给出了第一个位置。我该怎么找到其他的位置呢?

3 个回答

0

试试这个:

word = 'internet'
letter = 'e'
[i for i in xrange(len(word)) if word[i] == letter]
13

试着在一个列表推导式中使用enumerate

[index for (index, letter) in enumerate(word) if letter == 'e']
6

Mark的回答对于查找单个字母来说更好。我这里补充一下,如果你要查找的字符串比一个字符长的话,可以参考这个。

如果你想使用str.index(),这个方法可以指定一个可选的start位置。如果你要找的字符串没有找到,它会抛出一个ValueError错误:

>>> 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

撰写回答