假设我有一个int
s的列表:
listOfNumbers = range(100)
我想返回满足一定条件的元素的列表,例如:
def meetsCondition(element):
return bool(element != 0 and element % 7 == 0)
list
在list
for中 返回元素的子元素的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