至于您的第一个问题:如果item等于myList中的一个元素,那么该代码就可以正常工作。也许您试图找到一个字符串,但它与其中一个项不完全匹配,或者您使用的浮点值存在不精确性。
至于你的第二个问题:如果在列表中“发现”事物,实际上有几种可能的方法。
检查里面是否有东西
这是您描述的用例:检查列表中是否有内容。如您所知,您可以使用in运算符:3 in [1, 2, 3] # => True
过滤集合
也就是说,找到一个序列中满足某个条件的所有元素。您可以使用列表理解或生成器表达式:matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
后者将返回一个生成器,您可以将其想象为一种惰性列表,只有在您遍历它时才会生成它。顺便说一下,第一个完全等同于matches = filter(fulfills_some_condition, lst)
在Python 2中。在这里你可以看到高阶函数在工作。在Python 3中,filter不返回列表,而是返回一个类似生成器的对象。
找到第一个
如果您只想要与条件匹配的第一件事(但您还不知道它是什么),那么使用for循环就可以了(也可以使用else子句,这并不是很有名)。你也可以使用next(x for x in lst if ...)
如果未找到匹配项,则返回第一个匹配项或引发一个StopIteration。或者,您可以使用next((x for x in lst if ...), [default value])
查找项目的位置
对于列表,还有一个index方法,如果您想知道列表中某个元素的位置,它有时会很有用:[1,2,3].index(2) # => 1
[1,2,3].index(4) # => ValueError
但是,请注意,如果有重复项,.index始终返回最低索引:。。。。。。[1,2,3,2].index(2) # => 1
如果存在重复项,并且需要所有索引,则可以使用enumerate()代替:[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]