>>> s.index("r")
>>> s.find("r")
以上只找到第一个字符。例如:
>>>s='hello'
>>>s.find('l')
仅输出2.如果我们想要两个'l'的位置并想要输出
,该怎么办? >>>[2, 3]
答案 0 :(得分:3)
您可以使用列表理解,enumerate
,就像这样
>>> [index for index, char in enumerate(s) if char == "l"]
[2, 3]
enumerate
函数将给出当前索引以及iterable中的当前项。因此,在每次迭代中,您将获得索引和字符串中的相应字符。我们正在检查字符是l
,如果是l
,我们会在结果列表中包含index
。
答案 1 :(得分:0)
thefourtheye的解决方案是最好的,但如果你想要一个不同的方法:
s = raw_input("Enter a string")
c = raw_input("Enter a char to search")
indexes = []
i = 0
while i < len(s):
if s[i] == c:
indexes.append(i)
i += 1
print "{} appears {} times at the following index/indexes {}".format(c,len(indexes),indexes)
答案 2 :(得分:0)
这是将她的答案扩展为正常功能:
def count_chars(string, char):
results = []
for index, value in enumerate(string):
if value == char:
results.append(index)
return results
然而,thefourtheye的回答是最好的pythonic答案。列表理解和一般的理解是Python的一个非常重要的部分(也是我最喜欢的部分之一)。我强烈建议你阅读here。在曲线前面没有错: - )。