回答編集履歴

4

まあいいか

2021/04/22 21:48

投稿

hayataka2049
hayataka2049

スコア30935

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  # 追記
16
16
 
17
- これは外側はflattenという処理で、やり方がいろいろあったりします。
17
+ これはflattenという処理で(ただしzipを展開していないので少し特殊ですが)、やり方がいろいろあったりします。
18
18
 
19
19
 
20
20
 

3

追記

2021/04/22 21:48

投稿

hayataka2049
hayataka2049

スコア30935

test CHANGED
@@ -64,4 +64,4 @@
64
64
 
65
65
  [Pythonでリストをflattenする方法まとめ - Soleil cou coup&\#233;](https://xef.hatenadiary.org/entry/20121027/p2)
66
66
 
67
- (ただし古い記事。これが書かれた頃からだいぶPythonの実装が変わっていると思いますが、今の環境での最速の方法は調べていません)
67
+ (ただし古い記事。これが書かれた頃からだいぶPythonの実装が変わっていると思いますが、今の環境での最速の方法は調べていません。でも、基本的な考え方はさほど変わらないでしょう

2

追記

2021/04/22 21:41

投稿

hayataka2049
hayataka2049

スコア30935

test CHANGED
@@ -64,4 +64,4 @@
64
64
 
65
65
  [Pythonでリストをflattenする方法まとめ - Soleil cou coup&\#233;](https://xef.hatenadiary.org/entry/20121027/p2)
66
66
 
67
- (ただし古い記事。だいぶPythonの実装が変わっていると思いますが、今の環境での最速は計測して調べていません)
67
+ (ただし古い記事。これが書かれた頃からだいぶPythonの実装が変わっていると思いますが、今の環境での最速の方法は調べていません)

1

追記

2021/04/22 21:40

投稿

hayataka2049
hayataka2049

スコア30935

test CHANGED
@@ -7,3 +7,61 @@
7
7
  D = [y for x in zip(A, B, C) for y in x]
8
8
 
9
9
  ```
10
+
11
+
12
+
13
+
14
+
15
+ # 追記
16
+
17
+ これは外側はflattenという処理で、やり方がいろいろあったりします。
18
+
19
+
20
+
21
+ 速度重視なら`itertools.chain.from_iterable`が良いとか言われていたりします。
22
+
23
+
24
+
25
+ ```
26
+
27
+ from itertools import chain
28
+
29
+
30
+
31
+ n = 10 ** 5
32
+
33
+ A = list(range(n))
34
+
35
+ B = list(range(n, 2*n))
36
+
37
+ C = list(range(2*n, 3*n))
38
+
39
+
40
+
41
+ %%timeit -n 100
42
+
43
+ D = [y for x in zip(A, B, C) for y in x]
44
+
45
+
46
+
47
+ 12.5 ms ± 627 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
48
+
49
+
50
+
51
+ %%timeit -n 100
52
+
53
+ D = list(chain.from_iterable(zip(A, B, C))) # listに変換しないと駄目です
54
+
55
+
56
+
57
+ 6.79 ms ± 188 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
58
+
59
+ ```
60
+
61
+
62
+
63
+ 参考
64
+
65
+ [Pythonでリストをflattenする方法まとめ - Soleil cou coup&\#233;](https://xef.hatenadiary.org/entry/20121027/p2)
66
+
67
+ (ただし古い記事。だいぶPythonの実装が変わっていると思いますが、今の環境での最速は計測して調べていません)