wake-up-neo.net

Gibt eine Teilmenge der Liste zurück, die der Bedingung entspricht

Angenommen, ich habe eine Liste von ints:

listOfNumbers = range(100)

Und ich möchte eine Liste der Elemente zurückgeben, die eine bestimmte Bedingung erfüllen:

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

Was ist eine pythonische Methode, um ein sub -list von Element in einem list zurückzugeben, für das meetsCondition(element)True ist?

Ein naiver Ansatz:

def subList(inputList):
    outputList = []

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

    return outputList

divisibleBySeven = subList(listOfNumbers)

Gibt es eine einfache Möglichkeit, dies zu tun, möglicherweise mit einem Listenverständnis oder mit set() -Funktionen und ohne die temporäre Ausgabeliste?

18
Will

Listenverständnis verwenden,

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

oder Sie können auch die meetsCondition verwenden,

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

sie können dieselbe Bedingung mit Pythons wahrheitsgemäß Semantik wie folgt schreiben

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

alternativ können Sie die Funktion filter mit Ihrer Funktion meetsCondition verwenden

divisibleBySeven = filter(meetsCondition, inputList)
28
thefourtheye