-
-
Save bbookman/c5cf0516e9fcf0c1fdbdcff7cd43867a to your computer and use it in GitHub Desktop.
''' | |
Use a nested list comprehension to find all of the numbers from 1-100 that are divisible by any single digit besides 1 (2-9) | |
''' | |
#old school | |
no_dups = set() | |
for n in range(1, 100): | |
for x in range(2,10): | |
if n % x == 0: | |
no_dups.add(n) | |
print(no_dups) | |
print() | |
#nested list comprehension | |
result = [number for number in range(1,100) if True in [True for x in range(2,10) if number % x == 0]] | |
print(result) |
Just to be a smart-arse, using the full range 2-10 is unnecessary, because if a number isn't divisible by 2, it won't be divisible by 4, 6, 8 etc.
So a simplified version of this is:
result = [n for n in range(1001) if 0 in [n % divisor for divisor in [2,3,5,7]]]
good approach.
numbers = range(1, 1001)
div = range(2, 10)
result = [number for number in numbers if any(number % d == 0 for d in div)]
print(result)
When I read the statement without looking at the 'old school' code, I understood the objective differently. This code provides a list of lists in which each sublist contains all multiples for each of the digits 2-9. In case anyone was looking for this.
nested_list = [[number for number in range(1,1001) if number%digit == 0] for digit in range(2,10)]
print(nested_list)
"""
Use a nested list comprehension to find all of the numbers from
1-1000 that are divisible by any single digit besides 1 (2-9)
"""
divisibles = [i for i in range(1, 1001) if any([1 for j in range(2,10) if not i%j])]
Just to be a smart-arse, using the full range 2-10 is unnecessary, because if a number isn't divisible by 2, it won't be divisible by 4, 6, 8 etc.
So a simplified version of this is: