以下に、シンプルで簡単な方法とコード例をいくつか示します。
方法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
リストに追加します。