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)