gpt4 book ai didi

Python:在列表中查找

转载 作者:IT老高 更新时间:2023-10-28 12:02:17 26 4
gpt4 key购买 nike

我使用以下内容检查 item 是否在 my_list 中:

if item in my_list:
print("Desired item is in list")

但有时,它找不到该项目。这是为什么呢?


if item in my_list:”是在列表中查找项目最“pythonic”的方式吗?

最佳答案

至于您的第一个问题:“if item is in my_list:”非常好,如果 item 等于 my_list< 中的元素之一,则应该可以工作。该项目必须完全匹配列表中的项目。例如,"abc""ABC" 不匹配。特别是浮点值可能会受到不准确的影响。例如,1 - 1/3 != 2/3

至于你的第二个问题:如果在列表中“找到”东西,实际上有几种可能的方法。

检查里面是否有东西

这是您描述的用例:检查某物是否在列表中。如您所知,您可以使用 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)

后者将返回一个 generator,您可以将其想象为一种惰性列表,只有在您遍历它时才会构建。顺便说一句,第一个完全等价于

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]

关于Python:在列表中查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com