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
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
Kelebihan Iterator:
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!