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!