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

在Python中查找列表中匹配元素的索引

丌官高远
2023-03-14
问题内容

我有一个很长的浮点数列表,范围从1到5,称为“平均值”,我想返回小于a或大于b的元素的索引列表

def find(lst,a,b):
    result = []
    for x in lst:
        if x<a or x>b:
            i = lst.index(x)
            result.append(i)
    return result

matches = find(average,2,4)

但是令人惊讶的是,“ matches”的输出中有很多重复,例如[2, 2, 10, 2, 2, 2, 19, 2, 10, 2, 2, 42, 2, 2, 10, 2, 2, 2, 10, 2, 2, ...]

为什么会这样呢?


问题答案:

您正在使用.index()它将仅在列表中找到您的值的 第一个
匹配项。因此,如果在索引2和索引9处的值为1.0,则无论列表中发生了多少次,.index(1.0)都将 始终 返回。2``1.0

使用enumerate()到索引添加到您的循环,而不是:

def find(lst, a, b):
    result = []
    for i, x in enumerate(lst):
        if x<a or x>b:
            result.append(i)
    return result

您可以将其折叠为列表理解:

def find(lst, a, b):
    return [i for i, x in enumerate(lst) if x<a or x>b]


 类似资料:
  • 本文向大家介绍Python从列表中查找子列表元素的索引,包括了Python从列表中查找子列表元素的索引的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序,该程序从列表中查找子列表元素的索引。让我们看一个例子来清楚地理解它。 输入列表 输出结果 让我们看看解决给定问题的最简单,最常见的方法。按照给定的步骤解决它。 初始化列表。 使用索引遍历列表。 遍历子列表并检查要查找索引的元

  • 我有一个对象列表 现在我想找到B对象B的最后一个匹配项,使得B.x=1。我可以通过简单地运行for循环并更新每个匹配的索引来实现这一点。但在Java 8中如何做到这一点,我还不清楚。 我看到有Java 8 API用于查找findFirst()和findAny(),但没有找到任何类似于查找最后一个事件的API。

  • 问题内容: 只会给出列表中第一个出现的项目。有没有整齐的技巧可以返回列表中的所有索引? 问题答案: 你可以使用列表理解:

  • 问题内容: 我有一个清单“ a” 我需要找到一个特定数字的所有元组。说1 我怎么做? 问题答案: 如果只希望第一个数字匹配,则可以这样操作: 如果您仅搜索其中包含1的元组:

  • 问题内容: 所以这是我的代码: 包含一个整数列表。我想比较于并打印出不在的数字相比时。 当不能比较时,我可以打印其中的元素,但是当我尝试使用上面的代码进行相反操作时,则什么也不会打印。 有什么帮助吗? 问题答案: 您的代码没有按照我认为的方式执行。该行将遍历,每次等于的一个元素。因此,在执行任何操作之前,原始列表将被覆盖。 我想你想要这样的东西: 但是您可以轻松地执行以下操作: 或(如果您不介意丢

  • 问题内容: 在Python列表中查找最常见元素的有效方法是什么? 我的列表项可能无法散列,因此无法使用字典。同样在绘制的情况下,应返回索引最低的项目。例: 问题答案: 提出了这么多解决方案,令我惊讶的是没有人提出我认为显而易见的解决方案(对于不可哈希但可比较的元素)-。 提供快速,可重用的功能,并允许你将一些棘手的逻辑委托给经过良好测试的标准库组件。考虑例如: 当然,这可以写得更简洁一些,但我的目