当前位置: 首页 > 面试题库 >

Python:在列表中查找

陶沛
2023-03-14
问题内容

关于你的第一个问题:该代码非常好,并且如果与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如果没有找到任何匹配项,则将返回第一个匹配项或引发a 。或者,你可以使用

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]

问题答案:

关于你的第一个问题:该代码非常好,并且如果与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如果没有找到任何匹配项,则将返回第一个匹配项或引发a 。或者,你可以使用

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中找到列表的中值?列表可以是任何大小,并且不能保证数字按任何特定顺序排列。 如果列表包含偶数个元素,则函数应返回中间两个元素的平均值。 以下是一些示例(出于显示目的进行了分类):

  • 问题内容: 我可能在这里,但是我真的无法弄清楚我的代码出了什么问题: 输出为if语句从不触发。有人可以在这里发现我的错误吗? 问题答案: 您的问题是您之前在代码中已将其重新定义为变量。这意味着当您执行if时会返回,因为它们不相等。 话虽如此,您应该在测试事物的类型时使用它,这不会避免覆盖问题,而是一种使用Python方式检查类型的方法。

  • 问题内容: 我很新,我希望它不太明显,但是我似乎无法为以下问题找到一个简短而准确的答案。 我有两个清单: 我想查找第二个列表()的所有索引何时在第一个列表()中,以便得到如下内容: b在a中的索引:或 问题答案: 具有列表理解: 或使用for循环:

  • 我正在使用MongoDB搜索包含列表列表的元素,其中列表中至少有一个项目与搜索参数匹配。 这是我目前拥有的结构的一个例子。 我想搜索数据列表中值为“绿色”的所有项目。 我目前有这个: 但是,不会返回任何结果。

  • 问题内容: 背景: 示例列表: 我想检索一个子串是否匹配的元素,例如 码: 如果列表中的任何元素包含模式,则上面的命令会打印出来。 我想打印与子字符串匹配的元素。因此,如果我要检查,我只想从列表中打印。 问题答案: print [s for s in list if sub in s] 如果要用换行符分隔它们: 完整示例,不区分大小写:

  • 我正在尝试拆分一个word文档,该文档如下所示: 1.0列表项 1.1列表项 1.2列表项 2.0列表项 它存储在docx中,我正在使用python-docx尝试解析它。不幸的是,它在开始时失去了所有的编号。我试图识别每个有序列表项的开始。 python-docx库也允许我访问样式,但是我不知道如何确定样式是否是列表样式。 到目前为止,我一直在处理函数和检查输出,但标准格式类似于: 我一直在使用它