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?

Patricia Arquette
Patricia Arquetteasal
2024-12-20 15:11:10681semak imbas

How to Identify Consecutive Number Groups in Python Lists?

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!

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