查找字符串中字符的索引

时间:2018-10-31 02:16:08

标签: python list for-loop

def indexes(word, letter):
    acc=[]
    for i in word:
        for g in letter:
            if g in i:
                acc.append(word.index(i))
    return acc

如果我调用函数indexes("mississippi","s"),则返回以下内容:

[2, 2, 2, 2]

因此,该函数返回正确数量的字母,但仅返回找到“ s”的第一个索引,并使用该索引填充列表。列表为什么不返回每个“ s”的索引的任何原因?

3 个答案:

答案 0 :(得分:0)

如果一个元素存在多次,则python index()方法仅返回第一个索引。

如此处所述:https://stackoverflow.com/a/6294205/10534842

  

您可以使用列表理解:

indices = [i for i, x in enumerate(my_list) if x == "whatever"]

答案 1 :(得分:0)

index将始终返回第一个索引。您可以在函数中使用enumerate来迭代时获取每个字母的索引:

def indexes(word, letter):
    acc=[]
    for i, c in enumerate(word):
        if c == letter:
            acc.append(i)
    return acc

print(indexes("mississippi","s"))
# [2, 3, 5, 6]

答案 2 :(得分:0)

使用列表理解功能

def indexes(word, letter):
    return [pos for pos, char in enumerate(word) if char == letter]

print(indexes("mississippi","s"))