首頁 > 後端開發 > Python教學 > 如何識別 Python 清單中的連續數字並對其進行分組?

如何識別 Python 清單中的連續數字並對其進行分組?

Susan Sarandon
發布: 2024-12-08 17:47:11
原創
645 人瀏覽過

How to Identify and Group Consecutive Numbers in a Python List?

辨識清單中的連續數字

任務是將清單分為連續數字群組。每組應僅包含連續的數字。輸出必須保留單個數字,而不是將它們組合成範圍。

解決方案:

在Python 中,您可以使用內建的groupby 函數和自訂鍵達到this:

from itertools import groupby
from operator import itemgetter

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])
登入後複製

解釋:

  1. enumerate(data)建立一個對列表,其中每個對由一個索引(從 0 開始)以及 data 中對應的元素。
  2. lambda 函數 (lambda (index, item): index - item) 計算索引和元素值之間的差異。這種差異作為分組的關鍵。
  3. groupby 根據該鍵將對列表分割為連續的群組。每個組別都包含具有相同差異的元素。
  4. 為了檢索連續數字的範圍,我們使用 map(itemgetter(1), group) 將每個群組中的對映射到其第二個元素(實際數字)。
  5. 我們檢查每一組是否包含多個數字。如果是這樣,我們為這些數字建立一個範圍並將其附加到範圍中。否則,我們只需將數字添加到範圍中即可。

範例輸出:

data = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20]
ranges = [xrange(2, 5), xrange(12, 17), 20]
登入後複製

以上是如何識別 Python 清單中的連續數字並對其進行分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板