回答編集履歴
6
ジェネレータ例追加
test
CHANGED
@@ -1,3 +1,27 @@
|
|
1
|
+
itertools.product同様にジェネレータにすればメモリ使用量は減ります。
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
```
|
6
|
+
|
7
|
+
def bit_pattern(n):
|
8
|
+
|
9
|
+
for i in range(2**n):
|
10
|
+
|
11
|
+
yield [(i >> b) & 1 for b in range(n - 1, -1, -1)]
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
M = 10
|
16
|
+
|
17
|
+
for bit in bit_pattern(M):
|
18
|
+
|
19
|
+
print(bit)
|
20
|
+
|
21
|
+
```
|
22
|
+
|
23
|
+
|
24
|
+
|
1
25
|
処理内容によっては、バイナリのままrangeにしておいて、必要なときに2進配列化する手もあるのでは?
|
2
26
|
|
3
27
|
itertool.product で処理した方が高速ですけど。
|
@@ -12,7 +36,7 @@
|
|
12
36
|
|
13
37
|
>>> def to_array(b, n):
|
14
38
|
|
15
|
-
... return [(
|
39
|
+
... return [(i >> b) & 1 for b in range(n - 1, -1, -1)]
|
16
40
|
|
17
41
|
...
|
18
42
|
|
5
例変更
test
CHANGED
@@ -8,15 +8,15 @@
|
|
8
8
|
|
9
9
|
>>> M = 10
|
10
10
|
|
11
|
-
>>> pattern = range(
|
11
|
+
>>> pattern = range(1<<M)
|
12
12
|
|
13
|
-
>>> for
|
13
|
+
>>> def to_array(b, n):
|
14
14
|
|
15
|
-
>>
|
15
|
+
... return [(b >> (i - 1)) & 1 for i in range(n, 0, -1)]
|
16
16
|
|
17
|
-
|
17
|
+
...
|
18
18
|
|
19
|
-
>>> print(
|
19
|
+
>>> print(to_array(pattern[5], M))
|
20
20
|
|
21
21
|
[0, 0, 0, 0, 0, 0, 0, 1, 0, 1]
|
22
22
|
|
4
補足追加
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
処理内容によっては、バイナリのままrangeにしておいて、必要なときに2進配列化する手もあるのでは?
|
2
|
+
|
3
|
+
itertool.product で処理した方が高速ですけど。
|
2
4
|
|
3
5
|
|
4
6
|
|
3
出力追加
test
CHANGED
@@ -38,7 +38,11 @@
|
|
38
38
|
|
39
39
|
0000000000
|
40
40
|
|
41
|
+
0000000001
|
42
|
+
|
41
43
|
...
|
44
|
+
|
45
|
+
1111111110
|
42
46
|
|
43
47
|
1111111111
|
44
48
|
|
2
使用例追加
test
CHANGED
@@ -19,3 +19,27 @@
|
|
19
19
|
[0, 0, 0, 0, 0, 0, 0, 1, 0, 1]
|
20
20
|
|
21
21
|
```
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
とか
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
```
|
30
|
+
|
31
|
+
>>> M = 10
|
32
|
+
|
33
|
+
>>> for i in range(2**M):
|
34
|
+
|
35
|
+
... print(f"{i:0{M}b}")
|
36
|
+
|
37
|
+
...
|
38
|
+
|
39
|
+
0000000000
|
40
|
+
|
41
|
+
...
|
42
|
+
|
43
|
+
1111111111
|
44
|
+
|
45
|
+
```
|
1
別案
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
バイナリのままrangeにしておいて、必要なときに2進配列化する手もあるのでは?
|
1
|
+
処理内容によっては、バイナリのままrangeにしておいて、必要なときに2進配列化する手もあるのでは?
|
2
2
|
|
3
3
|
|
4
4
|
|