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

2024-10-01 15:46:31 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个int的列表:

listOfNumbers = range(100)

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

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

在一个list中返回一个子list元素的Pythonic方法是什么,其中meetsCondition(element)True

天真的方法:

def subList(inputList):
    outputList = []

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

    return outputList

divisibleBySeven = subList(listOfNumbers)

有没有一种简单的方法可以做到这一点,可能是使用列表理解或set()函数,而不使用临时outputList


Tags: 方法元素列表returndefrangeelementlist
1条回答
网友
1楼 · 发布于 2024-10-01 15:46:31

使用列表理解

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

或者您也可以使用meetsCondition

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

实际上,您可以使用Python的truthy语义编写相同的条件,如下所示

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

或者,您可以对meetsCondition使用filter函数,如下所示

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)

相关问题 更多 >

    热门问题