回答編集履歴
1
pandasを使ったコードを追加
answer
CHANGED
@@ -2,4 +2,26 @@
|
|
2
2
|
|
3
3
|

|
4
4
|
|
5
|
-
質問にある領域1,領域2、領域3と見比べてみてください。
|
5
|
+
質問にある領域1,領域2、領域3と見比べてみてください。
|
6
|
+
|
7
|
+
追記
|
8
|
+
|
9
|
+
うまく動いたようで良かったですね。
|
10
|
+
|
11
|
+
最初に作ったコードを載せておきます。(defの行を入れたので一行増えています)
|
12
|
+
ご参考まで
|
13
|
+
|
14
|
+
```python
|
15
|
+
>>> import pandas as pd
|
16
|
+
>>> left = [1, 3, 6]
|
17
|
+
>>> right = [4, 5, 8]
|
18
|
+
>>>
|
19
|
+
>>> import pandas as pd
|
20
|
+
>>> def unite(left, right):
|
21
|
+
... df = pd.DataFrame({'x':left+right, 'w':[1]*len(left)+[-1]*len(right)}).sort_values('x')
|
22
|
+
... df['cs'] = df['w'].cumsum()
|
23
|
+
... return list(df[(df['w']==1) & (df['cs']==1)]['x']), list(df[(df['w']==-1) & (df['cs']==0)]['x'])
|
24
|
+
...
|
25
|
+
>>> unite(left, right)
|
26
|
+
([1, 6], [5, 8])
|
27
|
+
```
|