如何在列表python中查找和打印特定关键字

时间:2016-06-05 08:13:19

标签: python

我是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次?即使“火腿”只应该两次?

2 个答案:

答案 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);