ソート済みで重複のない配列中に現れる連番(隣り合うインデックスの差が1)を見つける方法を思案しています.コードの可読性よりも計算速度を重視します.
例えば,
L = [1,2,5,9,10,11,13,15,16,19]
というnumpy配列があるとき(ソート済みで重複なし)
[[1,2],
[5],
[9,10,11],
[13],
[15,16],
[19]]
というようなリストを作りたいんです.どのようにすると良いでしょうか?
配列Lのlengthは5000程度です.
具体的なコードがなくても,アルゴリズムだけでも指南して頂ければ助かります.
(もちろんコードもくれると嬉しいです)
とりあえず思いつくのはこんな感じです.
python
1x = np.array([1,2,5,9,10,11,13,15,16,19]) 2 3new = [] 4tmp = [] 5for i in range(len(x)): 6 if x[i] == x[i-1] + 1: 7 tmp.append(x[i]) 8 else: 9 new.append(tmp) 10 tmp = [] 11 tmp.append(x[i]) 12print(new)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/07 11:25
2020/10/07 12:09
2020/10/07 12:19