#!/usr/bin/python3
#print([(x, x**2) for x in range(1, 11)])
# this is okay - runs the print function, which returns None
L = [print(x, x**2) for x in range(1, 11)]
#print(L) # note that L was 10 None's
L = range(1, 11)
# not allowed to do -
#[L[i] = L[i]**2 for i in range(0, 10)]
L = [L[i]**2 for i in range(0, 10)]
# equivalent to ...
# L_new = []
# for i in range(0, 10):
# L_new.append(L[i]**2)
# L = L_new
print(L)
print([x for x in range(1, 101) if x % 5 == 0])
print([(x, y) for x in range(0, 5) for y in ['a', 'b', 'c']])
# equivalent to...
# L_new = []
# for x in range(0, 5):
# L_new.append([(x, y) for y in ['a', 'b', 'c']])
# equivalent to...
# L_new = []
# for x in range(0, 5):
# L_new2 = []
# for y in ['a', 'b', 'c']:
# L_new2.append((x,y))
# L_new.append(L_new2)
def isPrime(x):
if x < 2: return False
elif x == 2: return True
elif x % 2 == 0: return False
else:
i = 3
while i*i <= x:
if x % i == 0: return False
i += 2
return True
[print(x) for x in range(1, 101) if isPrime(x)]