連続する要素を見つける方法


以下に、シンプルで簡単な方法とコード例をいくつか示します。

方法1: ループを使用して連続する要素を見つける方法

def find_consecutives(nums):
    consecutives = []
    current_consecutives = [nums[0]]

    for i in range(1, len(nums)):
        if nums[i] == nums[i-1] + 1:
            current_consecutives.append(nums[i])
        else:
            if len(current_consecutives) > 1:
                consecutives.append(current_consecutives)
            current_consecutives = [nums[i]]

    if len(current_consecutives) > 1:
        consecutives.append(current_consecutives)

    return consecutives

この方法では、与えられたリスト nums をループで走査し、連続する要素を見つけます。連続する要素は current_consecutives という一時的なリストに格納され、それらが途切れた場合には consecutives リストに追加されます。

方法2: NumPyを使用して連続する要素を見つける方法

import numpy as np
def find_consecutives(nums):
    diffs = np.diff(nums)
    consecutive_starts = np.where(diffs != 1)[0] + 1
    consecutive_lengths = np.diff(np.concatenate(([0], consecutive_starts, [len(nums)])))
    consecutives = [nums[start:start+length] for start, length in zip(consecutive_starts, consecutive_lengths) if length > 1]

    return consecutives

この方法では、NumPyライブラリを使用して与えられたリスト nums を処理します。まず、隣り合う要素間の差分を計算し、その結果を diffs に格納します。次に、差分が1でない箇所を検出し、連続する部分の開始位置を consecutive_starts に保存します。さらに、各連続部分の長さを計算し、それらを consecutives リストに追加します。