返回匹配条件的列表子集

时间:2016-01-30 11:51:23

标签: python list python-2.7 set list-comprehension

假设我有一个int s列表:

listOfNumbers = range(100)

我想返回一个符合某种条件的元素列表,比如说:

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

list listmeetsCondition(element)的{​​{1}}中返回子True元素的Pythonic方式是什么?

一种天真的方法:

def subList(inputList):
    outputList = []

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

    return outputList

divisibleBySeven = subList(listOfNumbers)

是否有一种简单的方法可以执行此操作,可能使用列表推导或set()函数,而不使用临时outputList?

1 个答案:

答案 0 :(得分:28)

使用列表理解,

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]

或者,您可以对filter使用meetsCondition功能,就像这样

divisibleBySeven = filter(meetsCondition, inputList)