回答編集履歴

2

コメント追加

2018/06/11 11:17

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -35,6 +35,12 @@
35
35
 
36
36
 
37
37
  def f1(a,b,c,d):
38
+
39
+ """私が考えた方式。一列ずつ見て、削っていきます
40
+
41
+ こうすると比較の回数がケチれて(本質的には短絡評価と同じことをしています)速いはずです
42
+
43
+ """
38
44
 
39
45
  tmp = A
40
46
 

1

質問者様の方式も追加

2018/06/11 11:17

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -14,11 +14,27 @@
14
14
 
15
15
 
16
16
 
17
- def f1(a,b,c,d):
17
+ def f0(a,b,c,d):
18
18
 
19
- """mkgreiさんの方式だと.all以前が律儀にすべて計算されて遅いと思ったので、こうしてみました
19
+ """質問文の方式
20
20
 
21
21
  """
22
+
23
+ lst = []
24
+
25
+ for i in A:
26
+
27
+ if i[0] == 1 and i[1] == 2 and i[2] == 3 and i[3] == 4:
28
+
29
+ lst.append(i[4])
30
+
31
+ # print(lst)
32
+
33
+ lst
34
+
35
+
36
+
37
+ def f1(a,b,c,d):
22
38
 
23
39
  tmp = A
24
40
 
@@ -48,8 +64,24 @@
48
64
 
49
65
 
50
66
 
67
+ print(timeit.timeit(lambda : f0(0,1,2,3), number=1000))
68
+
51
- print(timeit.timeit(lambda : f1(0,1,2,3), number=1000)) # こっちの方が速かったです
69
+ print(timeit.timeit(lambda : f1(0,1,2,3), number=1000))
52
70
 
53
71
  print(timeit.timeit(lambda : f2(0,1,2,3), number=1000))
54
72
 
73
+ """
74
+
75
+ 私の環境だと、
76
+
77
+ 3.3318773460000557
78
+
79
+ 0.06133379499988223
80
+
81
+ 0.27946032499994544
82
+
83
+ くらい
84
+
85
+ """
86
+
55
87
  ```