我是python的新手,还在学习。
我正在编写一个程序,在列表中找到包含这些值的特定单词“ham”:['hamsandwhich', 'ham', 2.2, 5]
如果列表中存在“ham”并将其编入索引,我如何编码以获取。我的代码如下,但输出很奇怪,我无法弄清楚它的内容:
x="ham"
y= =["hamsanwhich", "ham",2.2]
for x in y:
print ("found ham"
y.index(x)
输出如下:
found ham
0
found ham
1
found ham
2
found ham
3
我应该单独搜索每个子字符串吗? 为什么它索引4次?即使“火腿”只应该两次?
答案 0 :(得分:1)
如果您有兴趣找到" ham"在列表中:
x="ham"
y=["hamsanwhich", "ham",2.2]
if x in y:
print(x," found in pos ",y.index(x))
如您所见,无需手动迭代列表。但是,如果单词" ham"可以在列表中多次出现,您需要找到所有位置,您可以使用enumerate
:
x="ham"
y=["hamsanwhich", "ham",2.2,"ham",67,2,"ham"]
for pos,element in enumerate(y):
if element==x:
print(x," found in pos ",pos)
如果您需要substring
功能:
x="ham"
y=["hamsanwhich", "ham",2.2,"ham",67,2,"ham"]
for pos,element in enumerate(y):
if x in str(element):
print(x," found in pos ",pos)
#If only interested in the first occurrence, uncomment the following line
#break
答案 1 :(得分:0)
您的代码中存在一堆拼写错误和缩进错误,但如果我们解决这些问题,您就会遇到类似这样的问题:
x = "ham"
y = ["hamsandwich", "ham", 2.2]
for x in y:
print("found ham")
print(y.index(x))
这并不符合您的期望,因为for
循环会依次用x
中的每个值覆盖原始y
变量。
您想要的是将for
更改为if
,这会将in
的部分循环语法更改为运算符,并检查x
是否为y
x = "ham"
y = ["hamsandwich", "ham", 2.2]
if x in y:
print("found ham")
print(y.index(x))
中的项目:
1
此版本的代码中没有循环,打印的索引将为public void setProperty(String name, Object value);
。