查找第一个不等于特定值的元素的索引

5

我希望找到一个字符串中第一个与给定值不相等的元素的索引。

伪代码:

string='111111234131986'
string.find(!='1')

结果:

6

4
你的问题不够清晰。在你的例子中,字符串中还有很多元素不等于'1'。你是想匹配只有最后一个元素吗? - Lukas Thaler
只需简单地将查找逻辑反转为未找到逻辑。 - Riccardo La Marca
1
不,我认为他想要第一个元素的索引值。这里很令人困惑,因为它与最后一位数字相同。 - PyPingu
3个回答

5

这里有一个非常简单的解决方案,使用 lstrip()len()函数:

len(string) - len(string.lstrip("1"))

如果 string 是空的或者完全由 "1" 组成,那么此解决方案将返回 len(string)


@bcosta12 '231451' 返回0,这正是我所期望的。 - Riccardo La Marca
在第一种解决方案中,如果字符串为空或完全由“1”组成,则会出现索引超出范围异常。尽管如此,第二种解决方案更适合我的需求。 - Riccardo La Marca

3

假设您想要第一个不是'1'的元素,我们可以使用next()enumerate()

>>> string='111111234131986'
>>> next((i for i, x in enumerate(string) if x!='1'), None)
6

-1
你可以尝试这个,
string='111111234131986' #required string
for items in string: #loop to iterate over the elements to find the odd one
    if items != '1':
       print items

Output for this:
2
3
4
3
9
8
6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接