5.12. Patterns¶
5.12.1. Rationale¶
Python
for
loop is equivalent toforEach
in other languagesOther languages
for
loop is Python'swhile
(sic!)
For:
for (int i = 0; i <= 10; i++) # C/C++/Java for (var i = 0; i <= 10; i++) # JavaScript i = 0 while i <= 10: # Python i += 1
ForEach Index:
for (let idx in collection) # JavaScript for idx in range(len(collection)) # Python
ForEach Element:
for (var element : collection) # Java for (let element of collection) # JavaScript for element in collection # Python for i in range(0,10) # Python
Code Complexity vs. Programmer Experience:

Time Complexity: https://wiki.python.org/moin/TimeComplexity
5.12.3. ForEach¶
>>> DATA = ['a', 'b', 'c']
>>>
>>> for i in range(len(DATA)):
... value = DATA[i]
>>> DATA = ['a', 'b', 'c']
>>>
>>> for value in DATA:
... pass
5.12.4. Sum¶
>>> DATA = [1, 2, 3]
>>> result = 0
>>>
>>> for i in range(len(DATA)):
... result += DATA[i]
>>> DATA = [1, 2, 3]
>>> result = sum(DATA)
5.12.5. Enumerate¶
>>> DATA = ['a', 'b', 'c']
>>> i = 0
>>>
>>> while i < len(DATA):
... value = DATA[i]
... i += 1
>>> DATA = ['a', 'b', 'c']
>>>
>>> for i, value in enumerate(DATA):
... pass
5.12.6. Zip¶
>>> header = ['a', 'b', 'c']
>>> values = [1, 2, 3]
>>> result = {}
>>>
>>> for i in range(len(header)):
... key = header[i]
... val = values[i]
... result[key] = value
>>> header = ['a', 'b', 'c']
>>> values = [1, 2, 3]
>>>
>>> result = zip(header, values)
>>> dict(result)
{'a': 1, 'b': 2, 'c': 3}
5.12.7. List Comprehension¶
>>> DATA = ['a', 'b', 'c']
>>> result = list()
>>>
>>> for x in DATA:
... result.append(x)
...
>>> result
['a', 'b', 'c']
>>> DATA = ['a', 'b', 'c']
>>>
>>> result = [x for x in DATA]
>>> result
['a', 'b', 'c']
5.12.8. Set Comprehension¶
>>> DATA = ['a', 'b', 'c']
>>> result = set()
>>>
>>> for x in DATA:
... result.add(x)
>>> DATA = ['a', 'b', 'c']
>>> result = {x for x in DATA}
5.12.9. Dict Comprehension¶
>>> DATA = {'a': 1, 'b': 2, 'c': 3}
>>> result = dict()
>>>
>>> for key, value in DATA.items():
... result[key] = value
>>> DATA = {'a': 1, 'b': 2, 'c': 3}
>>> result = {k:v for k,v in DATA.items()}
5.12.10. Map¶
>>> def func(x):
... return float()
...
>>> DATA = [1, 2, 3]
>>> result = (func(x) for x in DATA)
>>> def func(x):
... return float()
...
>>> DATA = [1, 2, 3]
>>> result = map(func, DATA)
5.12.11. Filter¶
>>> def func(x):
... return x % 2 == 0
...
>>> DATA = [1, 2, 3]
>>> result = (x for x in DATA if func(x))
>>> def func(x):
... return x % 2 == 0
...
>>> DATA = [1, 2, 3]
>>> result = filter(func, DATA)
5.12.12. For Else¶
>>> DATA = [1, 2, 3]
>>> FIND = 10
>>> found = False
>>>
>>> for value in DATA:
... if value == FIND:
... print('Found')
... found = True
... break
...
>>> if not found:
... print('Not Found')
Not Found
>>> DATA = [1, 2, 3]
>>> FIND = 10
>>>
>>> for value in DATA:
... if value == FIND:
... print('Found')
... break
... else:
... print('Not Found')
Not Found
5.12.13. While Else¶
>>> DATA = [1, 2, 3]
>>> FIND = 10
>>> found = False
>>>
>>> while i < len(DATA):
... value = DATA[i]
... i += 1
... if value == FIND:
... print('Found')
... found = True
... break
...
>>> if not found:
... print('Not Found')
Not Found
>>> DATA = [1, 2, 3]
>>> FIND = 10
>>>
>>> while i < len(DATA):
... value = DATA[i]
... i += 1
... if value == FIND:
... print('Found')
... break
... else:
... print('Not Found')
Not Found
5.12.14. Str Startswith¶
>>> data = 'virginica'
>>> data[:1] == 'v'
True
>>> data[:3] == 'vir' or data[:2] == 've'
True
>>> data = 'virginica'
>>> data.startswith('v')
True
>>> data.startswith(('vir', 've'))
True
5.12.15. Str Endswith¶
>>> data = 'virginica'
>>> data[-3:] == 'osa'
False
>>> data[-3:] == 'osa' or data[-2:] == 'ca'
True
>>> data = 'setosa'
>>> data.endswith('osa')
True
>>> data.endswith(('osa', 'ca'))
True
5.12.16. Str Join Newline¶
>>> data = ['line1', 'line2', 'line3']
>>> result = [line+'\n' for line in data]
>>> data = ['line1', 'line2', 'line3']
>>> result = '\n'.join(data)
5.12.17. Others¶
all()
any()
iter()
next()
5.12.18. Functools¶
from functools import *
functools.reduce(function, iterable[, initializer])
5.12.19. Itertools¶
More information in Itertools
itertools.from itertools import *
itertools.count(start=0, step=1)
itertools.cycle(iterable)
itertools.repeat(object[, times])
itertools.accumulate(iterable[, func, *, initial=None])
itertools.chain(*iterables)
itertools.compress(data, selectors)
itertools.islice(iterable, start, stop[, step])
itertools.starmap(function, iterable)
itertools.product(*iterables, repeat=1)
itertools.permutations(iterable, r=None)
itertools.combinations(iterable, r)
itertools.combinations_with_replacement(iterable, r)
itertools.groupby(iterable, key=None)