Home > Backend Development > Python Tutorial > How Can I Identify Consecutive Number Groups in a Python List?

How Can I Identify Consecutive Number Groups in a Python List?

Susan Sarandon
Release: 2024-12-30 01:52:08
Original
614 people have browsed it

How Can I Identify Consecutive Number Groups in a Python List?

Identify Consecutive Number Groups in a List

Identifying groups of consecutive numbers in a list is a common task that arises in various programming scenarios.

Python's Built-in Tools

Fortunately, Python's built-in functions and modules provide elegant solutions for this problem. One approach leverages the groupby() function and the lambda expression:

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))
Copy after login

This snippet groups consecutive numbers based on the difference between their index and value, ensuring that elements within each group are consecutive.

If the desired output is a list of tuples representing the range of consecutive numbers, the following modification can be made:

ranges = []
for k, g in groupby(enumerate(data), lambda (i, x): i - x):
    group = map(itemgetter(1), g)
    ranges.append((group[0], group[-1]))
Copy after login

Alternate Approach

Alternatively, a custom solution can be implemented using a loop and a list comprehension:

ranges = []
for i in range(len(data)):
    if i == len(data) - 1 or data[i] + 1 != data[i + 1]:
        ranges.append((data[i], data[i]))
    else:
        start = i
        while i + 1 < len(data) and data[i] + 1 == data[i + 1]:
            i += 1
        ranges.append((data[start], data[i]))
Copy after login

This approach iterates through the list, identifying the starting and ending indices of each consecutive group and appending them to the ranges list.

The above is the detailed content of How Can I Identify Consecutive Number Groups in a Python List?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template