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
Linda Hamiltonasal
2024-12-07 11:21:11904semak imbas

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))

Ini akan mengeluarkan kumpulan nombor berturut-turut:

[2, 3, 4, 5]
[12, 13, 14, 15, 16, 17]

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]))

Ini akan menghasilkan:

[(2, 5), (12, 17)]

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])

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])

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:
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 sebelumnya:KMNIST dalam PyTorchArtikel seterusnya:KMNIST dalam PyTorch