Program Python untuk mengekstrak rentetan padanan grid

WBOY
Lepaskan: 2023-09-09 22:21:09
ke hadapan
861 orang telah melayarinya

Program Python untuk mengekstrak rentetan padanan grid

Pengiktirafan corak ialah konsep pengaturcaraan yang penting. Ia membolehkan kami mendapatkan semula data tertentu yang memenuhi syarat tertentu atau sepadan dengan urutan tertentu. Prinsip ini berguna dalam pelbagai bidang seperti Bahasa dan Pemprosesan imej. Padanan rentetan membantu kami mengekstrak maklumat yang bermakna daripada sejumlah besar data.

Dalam artikel ini, kita akan membincangkan konsep serupa untuk mengekstrak rentetan padanan grid daripada senarai rentetan yang diberikan. Fokus padanan grid adalah untuk mengekstrak rentetan "serupa" yang sama panjang Mari kita bincangkan isu ini secara terperinci.

Memahami masalah

Konsep utama adalah untuk mengekstrak rentetan serupa yang mengikut corak tertentu. Rentetan grid mengandungi aksara yang hilang, dan rentetan yang sepadan dengan corak tersembunyi grid harus diekstrak. Marilah kita memahami perkara ini melalui contoh -

Senario input dan output

Input:
lis1 = ["Suresh", "Ramesh", "Ravi", "Raghav"]
mesh = "___e_h"
Salin selepas log masuk

Grid mengandungi huruf "e" dan "h" serta beberapa aksara hilang yang membentuk corak. Kita perlu mengekstrak rentetan yang sepadan dengan corak grid daripada senarai.

Output: ['Suresh', 'Ramesh']
Salin selepas log masuk

Nampaknya, perkataan "Suresh" dan "Ramesh" sepadan dengan corak grid. Sekarang setelah kita memahami pernyataan masalah, mari kita bincangkan beberapa penyelesaian.

Menggunakan lelaran dengan Zip()

Selepas melepasi senarai rentetan dan corak grid, kami akan membuat senarai kosong untuk menyimpan rentetan yang diekstrak. Kami akan menggunakan gelung "untuk" untuk mengulangi setiap rentetan dan membina keadaan di dalam gelung untuk menyemak sama ada panjang "String" (perkataan) semasa adalah sama dengan panjang rentetan itu. jaring.

Ini membolehkan kami memilih rentetan yang berkaitan untuk pemadanan grid. Syarat ini juga menyemak sama ada aksara dalam grid ialah "garis bawah" atau sepadan dengan aksara yang sepadan dalam perkataan.

Menggunakan dua syarat ini, kami akan mengeluarkan perkataan yang sepadan dengan corak grid. Jika kedua-dua rentetan dan aksaranya memenuhi syarat tersebut, fungsi zip() akan digunakan untuk mengulang dan menggandingkan aksara dalam "mesh" dengan aksara dalam "". Fungsi ini membenarkan kedua-dua corak Membuat perbandingan berpasangan

Contoh

Berikut ialah contoh mengekstrak rentetan padanan grid –

lis1 = ["Suresh", "Ramesh", "Ravi", "Raghav"]
mesh = "___e_h"
lis2 = []
print(f"The original list is: {lis1}")

for words in lis1:
   if (len(words) == len(mesh)) and all((letter1 == "_") or (letter1 == letter2)
      for letter1, letter2 in zip(mesh, words)):
         lis2.append(words)

print(f"The new list is: {lis2}")
Salin selepas log masuk

Output

The original list is: ['Suresh', 'Ramesh', 'Ravi', 'Raghav']
The new list is: ['Suresh', 'Ramesh']
Salin selepas log masuk

Gunakan pemahaman senarai

Dalam pendekatan ini, kami akan menggunakan teknik pemahaman senarai untuk menjana kod yang terperinci dan padat. Konsep lelaran berbilang baris boleh diringkaskan kepada beberapa baris kod.

Perwakilan padat ini meningkatkan kebolehbacaan program. Kami akan menggunakan logik yang sama untuk mewujudkan syarat dan nilai berasingan yang memenuhi kriteria. Kedua-dua gelung "untuk" dan "jika" akan digunakan pada senarai. Bandingkan dan padankan setiap watak dengan bantuan fungsi

zip() .

Contoh

Berikut adalah contoh -

lis1 = ["Suresh", "Ramesh", "Ravi", "Raghav"]
mesh = "___e_h"
print(f"The original list is:{lis1}")

lis2 = [words for words in lis1 if (len(words) == len(mesh)) and all((letter1 == "_") or (letter1 == letter2)
           for letter1, letter2 in zip(mesh, words))]

print(f"The new list is: {lis2}")
Salin selepas log masuk

Output

The original list is:['Suresh', 'Ramesh', 'Ravi', 'Raghav']
The new list is: ['Suresh', 'Ramesh']
Salin selepas log masuk
Salin selepas log masuk

Gunakan fungsi Penapis() + Lambda()

Ciri penapis boleh digunakan untuk menapis nilai berdasarkan kriteria tertentu. Selepas menyediakan corak grid dan senarai rentetan, kami akan membuat senarai baharu dengan bantuan fungsi

filter() dan lambda . Fungsi penapis akan menapis rentetan yang tidak sepadan dan mentakrifkan fungsi lambda di dalamnya yang menyemak panjang kedua-dua corak. Fungsi

zip() akan digunakan untuk membandingkan dan memadankan aksara. Kriteria penapis akan disediakan oleh fungsi lambda.

Contoh

Berikut adalah contoh -

lis1 = ["Suresh", "Ramesh", "Ravi", "Raghav"]
mesh = "___e_h"
print(f"The original list is:{lis1}")

lis2 = list(filter(lambda words: len(words) == len(mesh) and all((letter1 == "_") or (letter1 == letter2)
   for letter1, letter2 in zip(mesh, words)), lis1))
print(f"The new list is: {lis2}")
Salin selepas log masuk

Output

The original list is:['Suresh', 'Ramesh', 'Ravi', 'Raghav']
The new list is: ['Suresh', 'Ramesh']
Salin selepas log masuk
Salin selepas log masuk
Pandangan berharga

Semua penyelesaian yang dibincangkan di atas mengikut satu prinsip teras: untuk membandingkan rentetan dan corak grid, panjangnya hendaklah sama, iaitu rentetan dan grid hendaklah mempunyai bilangan aksara yang sama. Tambahan pula, jika kedudukan garis bawah berubah, pengecaman corak juga akan berubah.

Kesimpulan

Dalam artikel ini, kami membincangkan beberapa penyelesaian yang kaya dan cekap untuk mengekstrak rentetan padanan

grid. Pada mulanya kami memberi tumpuan kepada memahami konsep padanan grid dan kemudian kami memperkenalkan penyelesaian. Kami menggunakan banyak konsep pengaturcaraan termasuk "Lelaran", "Pemahaman senarai", "filter()" dan "lambda function" b>" untuk mencapai matlamat kami.

Atas ialah kandungan terperinci Program Python untuk mengekstrak rentetan padanan grid. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan