Devolver subconjunto de lista que coincide con la condición

Digamos que tengo una lista de int s:

 listOfNumbers = range(100) 

Y quiero devolver una lista de los elementos que cumplen una determinada condición, digamos:

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

¿Cuál es una forma Pythonic de devolver una sub- list de elementos en una list para la cual meetsCondition(element) la meetsCondition(element) es True ?

Un enfoque ingenuo:

 def subList(inputList): outputList = [] for element in inputList: if meetsCondition(element): outputList.append(element) return outputList divisibleBySeven = subList(listOfNumbers) 

¿Hay una forma sencilla de hacer esto, quizás con una lista de funciones de comprensión o set() , y sin la lista de salida temporal?

Use la lista de comprensión,

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

o también puedes usar la meetsCondition ,

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

realmente puedes escribir la misma condición con la semántica de la verdad de Python, como esta

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

alternativamente, puede usar la función de filter con su meetsCondition , como esta

 divisibleBySeven = filter(meetsCondition, inputList)