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

如何返回与条件匹配的列表的子集?

邢小云
2023-03-14
问题内容

假设我有一个ints的列表:

listOfNumbers = range(100)

我想返回满足一定条件的元素的列表,例如:

def meetsCondition(element):
    return bool(element != 0 and element % 7 == 0)

listlistfor中 返回元素的子元素的Python方法meetsCondition(element)True什么?

天真的方法:

def subList(inputList):
    outputList = []

    for element in inputList:
        if meetsCondition(element):
            outputList.append(element)

    return outputList

divisibleBySeven = subList(listOfNumbers)

有没有一种简单的方法可以执行此操作,也许具有列表理解或set()函数,而没有临时的outputList


问题答案:

使用清单理解,

divisibleBySeven = [num for num in inputList if num != 0 and num % 7 == 0]

或者您可以使用meetsCondition也,

divisibleBySeven = [num for num in inputList if meetsCondition(num)]

您实际上可以使用Python的真实语义编写相同的条件,例如

divisibleBySeven = [num for num in inputList if num and num % 7]

另外,您也可以使用filter功能与你的meetsCondition,像这样的

divisibleBySeven = filter(meetsCondition, inputList)

%timeit

listOfNumbers = range(1000000)

%timeit [num for num in listOfNumbers if meetsCondition(num)]
[out]:
243 ms ± 4.51 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

%timeit list(filter(meetsCondition, listOfNumbers))
[out]:
211 ms ± 4.19 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)


 类似资料:
  • 问题内容: 测试(使用反射)最简单的方法是,给定方法(即java.lang.Method实例)是否具有返回类型,可以安全地强制转换为List ? 考虑以下代码段: 所有方法1、2、3均满足要求。对于method1进行测试非常容易(通过getGenericReturnType(),该方法返回ParameterizedType的实例),但是对于method2和3来说,并不是那么明显。我想通过遍历所有g

  • 如何将2列表ArrayList与list进行比较 ArrayList={a,b,c,d}和list lst={a,b,c,d,e} 结果:列表al={e} 我应该如何处理这个问题?由于对象不同,比较器不工作,即使设置或其他操作也不工作

  • 问题内容: 我想获取两个列表并查找两个列表中都出现的值。 [5]例如,将返回。 问题答案: 使用,它快速且可读。

  • 问题内容: 该方法返回的表示形式。这里返回的对象是数组支持的,但不是对象。 我正在寻找对象返回值与对象之间的差异- 一种快速的来源,可以告诉它们而无需深入研究代码。 TIA。 问题答案: 当您调用Arrays.asList时,它不会返回。它返回一个由原始源数组支持的固定大小列表。换句话说,它是使用Java的基于集合的API公开的数组的视图。 您不能向其中添加元素,也不能从中删除元素。如果您尝试从中

  • 我已经制作了一个带有几何图形和for循环的表格,用于打印出直角图形的名称,但我想为这个图形打印一个符合条件的随机名称,如果可能的话,还可以创建另一个表格,其中只包含符合条件的图形。我试图使用,但我不知道怎么做。我将感谢你的帮助:

  • 问题内容: 我有一个列表,数组或您熟悉的任何一种语言。例如,names:如果与这些名称之一匹配,我想查询该字段。 一种方法是使用OR过滤器。例如 有什么更好的办法吗?如果它是查询,则比过滤器更好。 问题答案: 哪一个Elasticsearch会像您曾经使用过的那样重写 在大多数情况下,使用布尔型过滤器时,使用过滤器比或更好。原因在Elasticsearch博客中进行了解释:http://www.e