Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Iterators Boleh Meratakan Senarai Bersarang Tidak Teratur dengan Cekap dalam Python?

Bagaimanakah Iterators Boleh Meratakan Senarai Bersarang Tidak Teratur dengan Cekap dalam Python?

Patricia Arquette
Lepaskan: 2024-12-24 22:35:10
asal
646 orang telah melayarinya

How Can Iterators Efficiently Flatten Irregularly Nested Lists in Python?

Meratakan Senarai Tidak Teratur dengan Pemula

Anda telah menyebut bahawa penyelesaian sedia ada untuk meratakan senarai bersarang gagal pada struktur seperti [[[1, 2, 3], [ 4, 5]], 6]. Pertanyaan ini meneroka kemungkinan pendekatan alternatif, terutamanya menggunakan iterator.

Pendekatan Cadangan:

Penyelesaian yang dicadangkan melibatkan memanfaatkan fungsi penjana untuk memudahkan proses merata dan meningkatkan prestasi .

Python 2 Pelaksanaan:

from collections import Iterable

def flatten(xs):
    for x in xs:
        if isinstance(x, Iterable) and not isinstance(x, basestring):
            for item in flatten(x):
                yield item
        else:
            yield x
Salin selepas log masuk

Pelaksanaan Python 3:

from collections.abc import Iterable

def flatten(xs):
    for x in xs:
        if isinstance(x, Iterable) and not isinstance(x, (str, bytes)):
            yield from flatten(x)
        else:
            yield x
Salin selepas log masuk

Kelebihan Iterator:

  • Iterators mengekalkan ingatan dengan malas menjana item satu demi satu, bukannya menyimpan keseluruhan senarai yang diratakan.
  • Iterators menghalang penyalinan dengan menghasilkan rujukan kepada elemen asal dan bukannya mencipta nilai pendua.
  • Iterators menjadikan kod lebih mudah dibaca, kerana fungsi penjana merangkumi logik untuk menavigasi bersarang struktur.

Kesimpulan:

Pendekatan yang dicadangkan menggunakan iterator menyediakan cara yang berkesan dan cekap untuk meratakan senarai senarai yang tidak teratur. Berbanding dengan kaedah lain, ia menangani kes dengan kedalaman bersarang sewenang-wenangnya dan mengelakkan kelemahan teknik perataan rekursif atau manual.

Atas ialah kandungan terperinci Bagaimanakah Iterators Boleh Meratakan Senarai Bersarang Tidak Teratur dengan Cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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