我刚开始使用python 3.我想在列表中找到属于列表的特定字符。这是我的代码:
num = ["one","two","threex"]
for item in num:
if item.find("x"):
print("found")
所以,如果字符“x”在列表的某个元素内,我想打印“found”。但是当我运行代码时,它会打印3次而不是1次。
为什么要打印3次?有人能帮助我吗?
答案 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}打印出来了。事实上,如果found
以found
开头,则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")
我希望你从上面的帖子中得到解决方案,在这里你知道原因