辨識清單中的連續數字群組
在Python中,辨識清單中的連續數字群組可以透過多種方法來實現。以下是可用選項的討論:
1。使用 Python 文件中的 GroupBy Recipe:
Python 為此任務提供了一個優雅的配方。 GroupBy 迭代枚舉列表項,將連續數字分組:
from operator import itemgetter from itertools import groupby data = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17] for k, g in groupby(enumerate(data), lambda (i,x):i-x): print(map(itemgetter(1), g))
這將輸出連續數字組:
[2, 3, 4, 5] [12, 13, 14, 15, 16, 17]
2。修改 GroupBy 輸出:
要取得要求的元組格式,您可以如下修改輸出:
ranges = [] for k, g in groupby(enumerate(data), lambda (i,x):i-x): group = map(itemgetter(1), g) ranges.append((group[0], group[-1]))
這會輸出:
[(2, 5), (12, 17)]
3.自訂實作:
您也可以實現自己的自訂實作:
ranges = [] for key, group in groupby(enumerate(data), lambda (index, item): index - item): group = map(itemgetter(1), group) if len(group) > 1: ranges.append(xrange(group[0], group[-1])) else: ranges.append(group[0])
您也可以實作自己的自訂解決方案:
處理個人號碼:
... if len(group) > 1: ranges.append(xrange(group[0], group[-1]+1)) else: ranges.append(group[0])
以上是如何辨識Python清單中的連續數字組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!