回答編集履歴

3

tuple->list

2018/06/11 17:02

投稿

YouheiSakurai
YouheiSakurai

スコア6142

test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
 
44
44
 
45
- 慣れないnumpyを使わずに2dのtupleにして素直に書いた方が結果自己記録的に速かった。
45
+ 慣れないnumpyを使わずに2dのtuple->listにして素直に書いた方が結果自己記録的に速かった。
46
46
 
47
47
 
48
48
 
@@ -52,9 +52,9 @@
52
52
 
53
53
 
54
54
 
55
- t = (95, 96, 97, 98)
55
+ t = [95, 96, 97, 98]
56
56
 
57
- A = tuple(map(tuple, np.arange(50000).reshape((10000, 5))))
57
+ A = tuple(map(list, np.arange(50000).reshape((10000, 5))))
58
58
 
59
59
  tuple(last for *first, last in A if first == t)
60
60
 

2

追記2

2018/06/11 17:02

投稿

YouheiSakurai
YouheiSakurai

スコア6142

test CHANGED
@@ -35,3 +35,27 @@
35
35
  print(ans)
36
36
 
37
37
  ```
38
+
39
+
40
+
41
+ # 追記2:恥ずかしいくらい遅いので本気を出す
42
+
43
+
44
+
45
+ 慣れないnumpyを使わずに2dのtupleにして素直に書いた方が結果自己記録的に速かった。
46
+
47
+
48
+
49
+ ```python
50
+
51
+ import numpy as np
52
+
53
+
54
+
55
+ t = (95, 96, 97, 98)
56
+
57
+ A = tuple(map(tuple, np.arange(50000).reshape((10000, 5))))
58
+
59
+ tuple(last for *first, last in A if first == t)
60
+
61
+ ```

1

For文を内包記法に

2018/06/11 16:57

投稿

YouheiSakurai
YouheiSakurai

スコア6142

test CHANGED
@@ -21,3 +21,17 @@
21
21
  print(row[-1])
22
22
 
23
23
  ```
24
+
25
+
26
+
27
+ # 追記
28
+
29
+
30
+
31
+ ```python
32
+
33
+ ans = tuple(v[-1] for v in map(memoryview, A) if v[:view_size] == view)
34
+
35
+ print(ans)
36
+
37
+ ```