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
906 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!

sumber:php.cn
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