How to return a subset of a list that matches a condition [duplicate]

Solution 1:

Use list comprehension,

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

or you can use the meetsCondition also,

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

you can actually write the same condition with Python's truthy semantics, like this

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

alternatively, you can use filter function with your meetsCondition, like this

divisibleBySeven = filter(meetsCondition, inputList)

%timeit

listOfNumbers = range(1000000)

%timeit [num for num in listOfNumbers if meetsCondition(num)]
[out]:
243 ms ± 4.51 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

%timeit list(filter(meetsCondition, listOfNumbers))
[out]:
211 ms ± 4.19 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)