Disons que j'ai une liste de int
s:
listOfNumbers = range(100)
Et je veux retourner une liste des éléments qui remplissent une certaine condition, disons:
def meetsCondition(element):
return bool(element != 0 and element % 7 == 0)
Quelle est la manière Pythonique de renvoyer un sous -list
élément dans un list
pour lequel meetsCondition(element)
est True
?
Une approche naïve:
def subList(inputList):
outputList = []
for element in inputList:
if meetsCondition(element):
outputList.append(element)
return outputList
divisibleBySeven = subList(listOfNumbers)
Existe-t-il un moyen simple de le faire, peut-être avec une compréhension de liste ou des fonctions set()
, et sans la liste de sortie temporaire?
Utilisez la compréhension de la liste,
divisibleBySeven = [num for num in inputList if num != 0 and num % 7 == 0]
ou vous pouvez également utiliser le meetsCondition
,
divisibleBySeven = [num for num in inputList if meetsCondition(num)]
vous pouvez en fait écrire la même condition avec la sémantique truey de Python, comme ceci
divisibleBySeven = [num for num in inputList if num and num % 7]
vous pouvez également utiliser la fonction filter
avec votre meetsCondition
, comme ceci
divisibleBySeven = filter(meetsCondition, inputList)