在字符串列表中查找字符串中第一个字母的位置(Python 3)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在字符串列表中查找字符串中第一个字母的位置(Python 3)相关的知识,希望对你有一定的参考价值。

我有一个字符串列表,我正在尝试找到我在字符串列表中搜索的子字符串的第一个字母的位置。我正在使用find()方法执行此操作,但是当我尝试打印第一个字母的位置时,Python会返回正确的位置,但之后会抛出-1,就像它找不到子字符串一样,但只是之后就能找到它。我想知道如何返回子串的第一个字母的位置而不返回正确值后的-1。

这是我的代码:

mylist = ["blasdactiverehu", "sdfsfgiuyremdn"]

word = "active"

if any(word in x for x in mylist) == True:
    for x in mylist:
        position = x.find(word)
        print(position)

输出是:

5
-1

我期望输出只是:

5

我认为这可能与循环正在为列表中的每个字符串搜索子字符串这一事实有关,并且在找到它仍然搜索更多的位置后,当然会返回错误,因为只有一个子字符串出现“活动” “但是,我不确定如何在成功找到一个子字符串后停止搜索。感谢任何帮助,谢谢。

答案

实际上,您的代码将无法按您的意愿运行,因为假定任何单词都包含子字符串,它将对每个单词进行检查。避免这种情况的好方法是使用发电机。更具体地说,next()

default_val = '-1'
position = next((x.find(word) for x in mylist if word in x), default_val)
print(position)

它将简单地为您提供第一个字符串“x”的子字符串“word”的位置,该字符串将符合列表“mylist”中条件if word in x的条件。

顺便说一句,在使用any()时不需要检查== True,它已经返回True / False,所以你可以简单地做if any(): ...

以上是关于在字符串列表中查找字符串中第一个字母的位置(Python 3)的主要内容,如果未能解决你的问题,请参考以下文章

excel 查找某个字符在某行中第N次出现位置

PHP strpos() 函数 的位置问题

检测 2 个字符串中第一个差异的位置

统计字符在字符串中第n次出现的位置

华为OD机试 - 第 K 个最小码值的字母(Python) | 机试题+算法思路+考点+代码解析 2023

华为OD机试真题Java实现字符串筛选排序真题+解题思路+代码(2022&2023)