Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengenalpasti dan Menghimpunkan Nombor Berturut-turut dalam Senarai Python?

Bagaimana untuk Mengenalpasti dan Menghimpunkan Nombor Berturut-turut dalam Senarai Python?

Susan Sarandon
Susan Sarandonasal
2024-12-08 17:47:11700semak imbas

How to Identify and Group Consecutive Numbers in a Python List?

Kenalpasti Nombor Berturut-turut dalam Senarai

Tugasnya ialah membahagikan senarai kepada kumpulan nombor berturut-turut. Setiap kumpulan hendaklah memasukkan nombor berturut-turut sahaja. Output mesti mengekalkan nombor individu dan tidak menggabungkannya ke dalam julat.

Penyelesaian:

Dalam Python, anda boleh menggunakan fungsi kumpulan mengikut terbina dalam bersama dengan kunci tersuai untuk mencapai ini:

from itertools import groupby
from operator import itemgetter

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

Penjelasan:

  1. enumerate(data) mencipta senarai pasangan, di mana setiap pasangan terdiri daripada indeks (bermula dari 0) dan elemen yang sepadan dalam data.
  2. Fungsi lambda (lambda (indeks, item): indeks - item) mengira perbezaan antara indeks dan nilai elemen. Perbezaan ini berfungsi sebagai kunci untuk mengumpulkan.
  3. menghimpunkan dengan membahagikan senarai pasangan kepada kumpulan berturut-turut berdasarkan kunci. Setiap kumpulan mengandungi elemen dengan perbezaan yang sama.
  4. Untuk mendapatkan semula julat nombor berturut-turut, kami memetakan pasangan dalam setiap kumpulan kepada elemen kedua mereka (nombor sebenar) menggunakan map(itemgetter(1), kumpulan).
  5. Kami menyemak sama ada setiap kumpulan mengandungi lebih daripada satu nombor. Jika ya, kami mencipta julat untuk nombor tersebut dan menambahkannya pada julat. Jika tidak, kami hanya menambah nombor pada julat.

Sampel Output:

data = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20]
ranges = [xrange(2, 5), xrange(12, 17), 20]

Atas ialah kandungan terperinci Bagaimana untuk Mengenalpasti dan Menghimpunkan 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