返回符合条件的列表子集

问题描述 投票:25回答:1

比方说,我有一个列表,其中包括 ints:

listOfNumbers = range(100)

我想返回一个满足特定条件的元素的列表,比如说。

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

有什么Pythonic的方法可以返回一个子的列表?list 的元素 list 为此 meetsCondition(element)True?

一种天真的做法。

def subList(inputList):
    outputList = []

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

    return outputList

divisibleBySeven = subList(listOfNumbers)

有没有一个简单的方法可以做到这一点,也许是用一个列表理解或 set() 功能,而没有临时的 outputList?

python list list-comprehension
1个回答
37
投票

使用列表理解。

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)
© www.soinside.com 2019 - 2024. All rights reserved.