web-dev-qa-db-ja.com

条件に一致するリストのサブセットを返す

intsのリストがあるとしましょう:

_listOfNumbers = range(100)
_

そして、私は特定の条件を満たす要素のリストを返したいと言います:

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

meetsCondition(element)listであるlistの要素のsub _Trueを返すPython的な方法は何ですか?

素朴なアプローチ:

_def subList(inputList):
    outputList = []

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

    return outputList

divisibleBySeven = subList(listOfNumbers)
_

おそらくリストの内包表記またはset()関数を使用し、一時的なoutputListを使用せずに、これを行う簡単な方法はありますか?

18
Will

リスト内包表記を使用し、

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)
28
thefourtheye