-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgenerator.py
More file actions
113 lines (85 loc) · 1.47 KB
/
generator.py
File metadata and controls
113 lines (85 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# generator
## simple
a = [0, 1, 2, 3]
b = (i+1 for i in a)
i = 0
for n in b:
assert n == a[i] + 1
i += 1
## if in front, as a map
a = [0, 1, 2, 3]
b = (i if i % 2 == 1 else 0 for i in a)
i = 0
for n in b:
if i == 0:
assert n == 0
if i == 1:
assert n == 1
if i == 2:
assert n == 0
if i == 3:
assert n == 3
i += 1
## if in back, as a filter
a = [0, 1, 2, 3]
b = (i for i in a if i % 2 == 1)
i = 0
for n in b:
if i == 0:
assert n == 1
if i == 1:
assert n == 3
i += 1
## multi list
a = [0, 1]
b = [10, 11]
c = (n - m for m in a for n in b)
### 先循环 a 后循环 b
i = 0
for n in c:
if i == 0:
assert n == 10
if i == 1:
assert n == 11
if i == 2:
assert n == 9
if i == 3:
assert n == 10
i += 1
## nested list expr
a = [
[0, 1],
[2, 3]
]
b = (j for i in a for j in i)
i = 0
for n in b:
if i == 0:
assert n == 0
if i == 1:
assert n == 1
if i == 2:
assert n == 2
if i == 3:
assert n == 3
i += 1
## random if and for
a = [
[0, 1, 2],
[0, 1],
[0],
]
b = (j for i in a if len(i) == 2 for j in i if j == 0)
i = 0
for n in b:
if i == 0:
assert n == 0
i += 1
assert i == 1
c = (j if j == 1 else 10 for i in a if len(i) == 2 for j in i if j == 0)
i = 0
for n in c:
if i == 0:
assert n == 10
i += 1
assert i == 1