Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengenalpasti Kumpulan Nombor Berturut-turut dalam Senarai Python?
Mengenal pasti Kumpulan Nombor Berturut-turut
Dalam Python, mengenal pasti kumpulan nombor berturut-turut dalam senarai boleh dicapai menggunakan itertools.groupby( terbina dalam ) fungsi. Begini cara ia berfungsi:
Fungsi itertools.groupby()
Fungsi groupby() mengelompokkan unsur-unsur boleh lelar berdasarkan fungsi utama. Dalam kes ini, kami mentakrifkan fungsi utama yang mengira perbezaan antara indeks elemen dan nilainya. Nombor berturut-turut akan mempunyai kunci yang sama, yang membawa kepada pengumpulannya.
Pelaksanaan Kod:
Pertimbangkan senarai sampel [2, 3, 4, 5, 12, 13 , 14, 15, 16, 17, 20]. Kod di bawah menggunakan groupby() untuk mengenal pasti kumpulan nombor berturut-turut:
from itertools import groupby from operator import itemgetter data = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20] ranges = [] for k, g in groupby(enumerate(data), lambda (i, x): i - x): group = map(itemgetter(1), g) if len(group) > 1: ranges.append(tuple(group[0], group[-1])) else: ranges.append(group[0])
Memahami Fungsi Utama:
Fungsi lambda (lambda (i, x): i - x) mengira perbezaan antara indeks unsur (i) dan nilai (x). Perbezaan ini membolehkan kita mengumpulkan nombor berturut-turut bersama-sama. Contohnya, untuk nombor 2, perbezaannya ialah 0, dan untuk nombor 12, perbezaannya ialah 10.
Memproses Elemen Berkumpulan:
Untuk setiap kunci (perbezaan), groupby() menghasilkan objek penjana (g) yang mengandungi elemen berkumpulan yang sepadan. Kami menukar penjana ini kepada senarai menggunakan map() dan itemgetter() untuk mengekstrak nilai elemen sahaja.
Menapis dan Menambah Keputusan:
Kami menyemak panjang elemen terkumpul untuk menentukan sama ada ia lebih besar daripada 1, menunjukkan nombor berturut-turut. Jika ya, kami menambahkan tuple unsur pertama dan terakhir dalam kumpulan pada senarai julat. Untuk nombor individu, kami menambahkan nombor itu sendiri.
Output:
Senarai julat akan mengandungi kumpulan nombor berturut-turut berikut:
[(2, 5), (12, 17), 20]
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!