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
Lepaskan: 2024-12-08 17:47:11
asal
712 orang telah melayarinya

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])
Salin selepas log masuk

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]
Salin selepas log masuk

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 Laman Web ini
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 terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan