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
”的索引的任何原因?
答案 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"))