2
# tag: generators, lambda
10
result = list( x*2 for x in range(5) )
11
assert x == 'abc' # don't leak
20
result = list( x*2 for x in range(5) if x % 2 == 0 )
21
assert x == 'abc' # don't leak
24
def genexpr_if_false():
26
>>> genexpr_if_false()
30
result = list( x*2 for x in range(5) if False )
31
assert x == 'abc' # don't leak
34
def genexpr_with_lambda():
36
>>> genexpr_with_lambda()
40
result = list( x*2 for x in range(5) if (lambda x:x % 2)(x) == 0 )
41
assert x == 'abc' # don't leak
44
def genexpr_of_lambdas(int N):
46
>>> [ (f(), g()) for f,g in genexpr_of_lambdas(5) ]
47
[(0, 0), (1, 2), (2, 4), (3, 6), (4, 8)]
49
return ( ((lambda : x), (lambda : x*2)) for x in range(N) )
52
def genexpr_with_bool_binop(values):
54
>>> values = [(1, 2, 3), (None, 4, None), (5, None, 6)]
55
>>> genexpr_with_bool_binop(values)
56
[(1, 2, 3), ('X', 4, 'X'), (5, 'X', 6)]
58
# copied from CPython's test_itertools.py
59
return [tuple((e is None and 'X' or e) for e in t) for t in values]