Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengenalpasti Kumpulan Nombor Berturut-turut dalam Senarai Python?

Bagaimana untuk Mengenalpasti Kumpulan Nombor Berturut-turut dalam Senarai Python?

Linda Hamilton
Lepaskan: 2024-12-07 11:21:11
asal
973 orang telah melayarinya

How to Identify Consecutive Number Groups in a Python List?

Mengenal pasti Kumpulan Nombor Berturut-turut dalam Senarai

Dalam Python, mengenal pasti kumpulan nombor berturut-turut dalam senarai boleh dicapai melalui pelbagai kaedah. Berikut ialah perbincangan tentang pilihan yang tersedia:

1. Menggunakan Resipi GroupBy daripada Dokumen Python:

Python menyediakan resipi yang elegan untuk tugasan ini. GroupBy berulang pada item senarai terhitung, mengumpulkan nombor berturut-turut:

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))
Salin selepas log masuk

Ini akan mengeluarkan kumpulan nombor berturut-turut:

[2, 3, 4, 5]
[12, 13, 14, 15, 16, 17]
Salin selepas log masuk

2. Mengubah suai Output GroupBy:

Untuk mendapatkan format tuple yang diminta, anda boleh mengubah suai output seperti berikut:

ranges = []
for k, g in groupby(enumerate(data), lambda (i,x):i-x):
    group = map(itemgetter(1), g)
    ranges.append((group[0], group[-1]))
Salin selepas log masuk

Ini akan menghasilkan:

[(2, 5), (12, 17)]
Salin selepas log masuk

3. Pelaksanaan Tersuai:

Anda juga boleh melaksanakan penyelesaian tersuai anda sendiri:

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])
Salin selepas log masuk

Mengendalikan Nombor Individu:

Untuk mengembalikan nombor individu sebagai elemen individu, cuma ubah suai kod pelaksanaan tersuai seperti berikut:

...
    if len(group) > 1:
        ranges.append(xrange(group[0], group[-1]+1))
    else:
        ranges.append(group[0])
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengenalpasti Kumpulan Nombor Berturut-turut dalam Senarai Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan