从python中的列表元素中查找字符串中的字符

时间:2017-11-09 19:50:38

标签: python-3.x

我刚开始使用python 3.我想在列表中找到属于列表的特定字符。这是我的代码:

num = ["one","two","threex"]
for item in num:
    if item.find("x"):
        print("found")

所以,如果字符“x”在列表的某个元素内,我想打印“found”。但是当我运行代码时,它会打印3次而不是1次。

为什么要打印3次?有人能帮助我吗?

4 个答案:

答案 0 :(得分:1)

如果在字符串中找不到该字符,则find()返回-1。任何非零的东西都等于True。试试if item.find("x") > -1

答案 1 :(得分:0)

您可以再次使用in作为字符串:

num = ["one","two","threex"]
for item in num:
    if "x" in item:
        print("found")

将字符串视为"ext"等字符列表 - > ['e', 'x', 't'] 所以"x" in "extreme"True

答案 2 :(得分:0)

如果break被发现,则looping需要strings 'x' strings {}} {}} {}} {}此外,在检查'x'中是否有string时,请改用in

num = ["one","two","threex"]
for item in num:
    if "x" in item:
        print("found")
        break

outputs

found

如果我修改num list,使其在任何元素中都没有x

num = ["one","two","three"]

然后再次运行代码时会出现 no 输出。

但为什么之前printing 3次?

简单地说,使用item.find("x") return integer index 'x' string。使用if-statement评估此问题的问题是integer始终评估为True,除非它是0。这意味着string num中的每个list都通过了测试if item.find("x"),因此每个3 strings,{{1}打印出来了。事实上,如果foundfound开头,则printed不会是string的唯一时间。在这种情况下,'x'的{​​{1}}将为index,而'x'将评估为0

希望这可以解释为什么你的代码无效。

哦,还有一些测试if的例子:

False

答案 3 :(得分:0)

如果找到则返回索引,否则返回-1。

num = ["one","two","threex"]
for item in num:
    if item.find("x"):
        print item.find("x")

我希望你从上面的帖子中得到解决方案,在这里你知道原因