- Problem
y = [0,1,2,3,4,5,6,7,8,9]
squares = []
for i in y:
squares.append(i**2)
print squares
- Formula: [
expression-involving-loop-variable
forloop-variable
insequence
] - Equivalent to
results = []
for loop-variable in sequence:
results.append(expression_involving_loop_variables)
This will step over every element of sequence, successively setting loop-variable equal to every element one at a time, and will then build up a list by evaluating expression-involving-loop-variable for each one
squares = [ x**2 for x in range(10) ]
-->[0, 1, 4, 9, 16, 25, 36, 49, 64, 81
- Formula: [
expression-involving-loop-variables
forouter-loop-variable
inouter-sequence
forinner-loop-variable
ininner-sequence
] - Equivalent to
results = []
for outer_loop_variable in outer_sequence:
for inner_loop_variable in inner_sequence:
results.append( expression_involving_loop_variables )
coords = [ (x,y) for x in range(5) for y in range(3) ]
-->[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2), (3, 0), (3, 1), (3, 2), (4, 0), (4, 1), (4, 2)]
- Formula: [
expression-involving-loop-variable
forloop-variable
insequence
ifboolean-expression-involving-loop-variable
] - Equivalent to
results = []
for loop-variable in sequence:
if boolean-expression-involving-loop-variable:
results.append(expression-involving-loop-variable)
OR,
new_list = []
for x in old_list:
if condition(x):
new_list.append(operation(x))
Same as:
new_list = [operation(x) for x in old_list if condition(x)]
names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
b_names = [
name
for name in names
if name.startswith('B')
]
print('b_names') ---> ['Bob', 'Barbara']