回答編集履歴
1
変更
answer
CHANGED
@@ -4,6 +4,14 @@
|
|
4
4
|
from collections import defaultdict
|
5
5
|
|
6
6
|
b=[2,3,7,30,32,64,103,111,200,204]
|
7
|
+
|
8
|
+
aa = defaultdict(set)
|
9
|
+
for item in a:
|
10
|
+
n = len(str(item))
|
11
|
+
aa[n].add(item)
|
12
|
+
aa
|
13
|
+
# defaultdict(set, {1: {1, 3, 6}, 2: {14, 30, 53}, 3: {103, 106}})
|
14
|
+
|
7
15
|
bb = defaultdict(set)
|
8
16
|
for item in b:
|
9
17
|
n = len(str(item))
|
@@ -12,18 +20,13 @@
|
|
12
20
|
# defaultdict(set, {1: {2, 3, 7}, 2: {30, 32, 64}, 3: {103, 111, 200, 204}})
|
13
21
|
```
|
14
22
|
|
15
|
-
あとは桁数ごとにチェックを掛ける。
|
23
|
+
あとは桁数ごとにチェックを掛けて、一致する要素だけをまとめる。
|
16
24
|
```Python
|
17
25
|
array = []
|
18
|
-
for
|
26
|
+
for n in set(aa):
|
19
|
-
n = len(str(item))
|
20
|
-
if item in bb[n]:
|
21
|
-
|
27
|
+
array.append(*(aa[n] & bb[n]))
|
22
28
|
array
|
23
29
|
# [3, 30, 103]
|
24
30
|
```
|
25
|
-
|
31
|
+
|
26
|
-
```Python
|
27
|
-
array = [item for item in a
|
28
|
-
|
32
|
+
パフォーマンスが向上するとはあまり思えないですが、測ってません。選ぶ際はShigemoriさんの方法と比べてからのほうがいいです。
|
29
|
-
```
|