None arguments in Python 2 builtins
map (Python 2 only)
Mapping with None in place of a function assumes the identity function instead. This allows it to be used as an alternative to itertools.izip_longest for zipping lists to the length of the longest list:
>>> L = [[1, 2], [3, 4, 5, 6], [7]] >>> map(None,*L) [(1, 3, 7), (2, 4, None), (None, 5, None), (None, 6, None)] For visualisation (with . representing None):
1 2 1 3 7 3 4 5 6 -> 2 4 . 7 . 5 . . 6 . filter
filter with None also assumes the identity function, thus removing falsy elements.
>>> L = ["", 1, 0, [5], [], None, (), (4, 2)] >>> filter(None, L) [1, [5], (4, 2)] This is a bit better than a list comprehension:
filter(None,L) [x for x in L if x] However, as @KSab notes, if all elements are of the same type then there may be shorter alternatives, e.g. filter(str,L) if all elements are strings.