lis python_Python:在lis中查找

至于您的第一个问题:如果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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值