Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Python - Gabungkan gabungan sehingga K

Python - Gabungkan gabungan sehingga K

PHPz
PHPzke hadapan
2023-08-26 23:01:121103semak imbas

Python - 将组合连接直到 K

Group concaten till K bermaksud menggabungkan elemen dalam kumpulan atau urutan sehingga syarat tertentu dipenuhi. Dalam Python, kita boleh menggunakan pelbagai kaedah untuk melaksanakan Group concatenate hingga K, seperti menggunakan gelung dan akumulator, menggunakan fungsi itertools.groupby() dan menggunakan ungkapan biasa. Dalam artikel ini, kami akan menggunakan dan meneroka semua kaedah ini untuk mencapai gabungan Kumpulan sehingga K atau memenuhi syarat tertentu.

Kaedah 1: Gunakan gelung dan penumpuk

Kaedah ini menggunakan gelung dan penumpuk untuk mengumpulkan elemen sehingga nilai sasaran K ditemui. Ia berulang melalui senarai, mengumpul elemen dalam kumpulan sementara sehingga K ditemui. Sebaik sahaja K ditemui, ia digabungkan menjadi rentetan dan ditambah pada senarai hasil. Akhir sekali, elemen yang tinggal dalam kumpulan dilampirkan pada senarai yang terhasil.

Tatabahasa

list_name.append(element)

Di sini, fungsi append() ialah kaedah senarai yang digunakan untuk menambah elemen pada penghujung senarai. Ia mengubah suai senarai asal dengan menambahkan elemen yang ditentukan sebagai item baharu pada senarai asal.

Contoh

Dalam contoh di bawah, fungsi group_concatenate_till_k menerima senarai lst dan nilai sasaran K. Ia memulakan hasil senarai kosong untuk menyimpan elemen terkumpul, dan kumpulan senarai kosong untuk mengumpul elemen sehingga K ditemui. Gelung setiap item dalam senarai. Jika istilah sama dengan K, unsur-unsur dalam kumpulan disatukan ke dalam rentetan dan dilampirkan pada hasilnya, maka kumpulan itu ditetapkan semula kepada senarai kosong. Jika item itu tidak sama dengan K, tambahkan item itu pada kumpulan.

Akhir sekali, ia menambahkan mana-mana elemen yang tinggal dalam kumpulan pada keputusan dan mengembalikan hasilnya.

def group_concatenate_till_k(lst, K):
    result = []
    group = []
    for item in lst:
        if item == K:
            result.append(''.join(group))
            group = []
        else:
            group.append(item)
    result.append(''.join(group))
    return result

# Example usage
lst = ['a', 'b', 'c', '', 'd', 'e', '', '', 'f']
K = ''
output = group_concatenate_till_k(lst, K)
print(output)

Output

['abc', 'de', 'f']

Kaedah 2: Gunakan itertools.groupby()

Dalam kaedah ini, fungsi groupby modul itertools digunakan untuk mengumpulkan elemen berturut-turut berdasarkan keadaan tertentu. Dengan menentukan syarat melalui fungsi lambda, ia membahagikan senarai kepada kumpulan yang tidak mengandungi K. Unsur-unsur dalam setiap kumpulan disatukan ke dalam rentetan dan ditambah pada senarai yang terhasil.

Tatabahasa

list_name.append(element)

Di sini, fungsi append() ialah kaedah senarai yang digunakan untuk menambah elemen pada penghujung senarai. Ia mengubah suai senarai asal dengan menambahkan elemen yang ditentukan sebagai item baharu pada senarai asal.

itertools.groupby(iterable, key=None)

Di sini, kaedah groupby() menerima objek boleh lelar sebagai input dan fungsi kekunci pilihan. Ia mengembalikan iterator yang menjana tuple yang terdiri daripada kunci berturut-turut dan . Fungsi utama digunakan untuk menentukan kriteria pengelompokan.

Contoh

Dalam contoh di bawah, kumpulan fungsi_concatenate_till_k menerima senarai lst dan nilai sasaran K. Ia menggunakan fungsi groupby untuk mengumpulkan elemen berturut-turut dalam senarai berdasarkan keadaan lambda x: x != K. Fungsi groupby mengembalikan sepasang kunci (hasil daripada keadaan) dan lelaran kumpulan yang sepadan. Dengan menyemak sama ada kunci itu Benar, kami menentukan kumpulan yang tidak mengandungi K dan menggabungkan elemen untuk membentuk rentetan. Rentetan itu kemudiannya ditambahkan pada senarai hasil.

from itertools import groupby

def group_concatenate_till_k(lst, K):
    result = []
    for key, group in groupby(lst, lambda x: x != K):
        if key:
            result.append(''.join(group))
    return result

# Example usage
lst = ['a', 'b', 'c', '', 'd', 'e', '', '', 'f']
K = ''
output = group_concatenate_till_k(lst, K)
print(output)

Output

['abc', 'de', 'f']

Kaedah 3: Gunakan ungkapan biasa

Kaedah ini melibatkan penggunaan ungkapan biasa untuk membahagikan senarai kepada kumpulan berdasarkan nilai sasaran K. Gunakan fungsi ungkapan biasa untuk membina corak, memastikan K tidak berada di permulaan kumpulan. Kemudian gunakan fungsi re.split untuk membelah rentetan bercantum berdasarkan corak ini untuk mendapatkan elemen berkumpulan yang diperlukan.

Tatabahasa

result = re.split(pattern, string)

Di sini, fungsi re.split daripada modul semula menerima dua parameter: corak dan rentetan. corak ialah ungkapan biasa yang mentakrifkan kriteria pemisahan, dan rentetan ialah rentetan input untuk dipecahkan. Fungsi ini mengembalikan senarai subrentetan yang dihasilkan oleh operasi belah mengikut corak yang ditentukan.

Contoh

Dalam contoh di bawah, fungsi group_concatenate_till_k menerima senarai lst dan nilai sasaran K. Ia membina corak ungkapan biasa dengan melepaskan nilai K dan menggunakan pernyataan pandangan negatif untuk memastikan bahawa K tidak berada di permulaan kumpulan. Rentetan bercantum kemudiannya dipecah berdasarkan corak yang dibina menggunakan fungsi re.split. Senarai terhasil yang mengandungi elemen terkumpul dikembalikan sebagai output.

import re

def group_concatenate_till_k(lst, K):
    pattern = f"(?!^{re.escape(K)}){re.escape(K)}"
    result = re.split(pattern, ''.join(lst))
    return result

# Example usage
lst = ['a', 'b', 'c', '', 'd', 'e', '', '', 'f']
K = ''
output = group_concatenate_till_k(lst, K)
print(output)

Output

['a', 'b', 'c', 'd', 'e', 'f', '']

Kesimpulan

Dalam artikel ini, kami membincangkan cara untuk menggabungkan elemen senarai atau jujukan dalam kumpulan sehingga syarat khusus K dipenuhi. Kami meneroka tiga pendekatan: menggunakan gelung dan penumpuk, itertools.groupby(), dan ungkapan biasa. Bergantung pada keperluan dan pilihan anda, anda boleh memilih kaedah yang paling sesuai dengan kes penggunaan khusus anda.

Atas ialah kandungan terperinci Python - Gabungkan gabungan sehingga K. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam