Python meratakan pemahaman daftar bersarang

Mendapatkan semua elemen dari koleksi saat ini secara rekursif dan memasukkan semua konten ke dalam satu koleksi tunggal adalah operasi yang paling umum dalam Pemrograman. Memuat semua elemen ke dalam satu koleksi disebut "Perataan"

Apa istilah "Ratakan"?

Istilah "perataan" dalam pemrograman menjelaskan pengambilan daftar sublist bersarang dan menampilkan satu daftar dengan semua nilai dari sublist digabungkan menjadi satu

Perataan adalah prosedur mengubah beberapa koleksi menjadi satu koleksi yang berisi semua elemen dalam koleksi yang Anda miliki sebelumnya

Apa itu Daftar Python?

Daftar ini adalah salah satu struktur data paling fleksibel di Python. Mengubah daftar menjadi daftar disebut "meratakan daftar"

Daftar Python dapat berisi banyak dimensi. Ini berarti Anda memiliki daftar di dalam daftar. Kadang-kadang disebut "daftar bersarang", ini dapat diubah kembali menjadi daftar biasa

Ada dua jenis daftar bersarang

  1. Daftar bersarang tidak beraturan
  2. Daftar bersarang reguler

Setiap elemen dari daftar ini adalah sublist, sehingga mengikuti keseragaman jenis elemen. Setiap elemen dari daftar ini adalah subdaftar atau item non-daftar. Oleh karena itu, ada ketidakteraturan dalam hal jenis elemen

Apa yang Anda maksud dengan meratakan daftar?

Meratakan daftar berarti mengambil daftar subdaftar bersarang dan mengembalikan satu daftar yang berisi semua nilai subdaftar. Pertama, mari kita lihat cara meratakan daftar dalam pemrograman Python

Daftar datar Python

3 cara mudah untuk meratakan daftar dengan Python

  1. Menggunakan pemahaman daftar
  2. Menggunakan itertools. rantai() metode
  3. Menggunakan metode numpy concatenate() dan flat()

Pendekatan 1. Gunakan pemahaman daftar

Pemahaman daftar menawarkan sintaks yang lebih singkat saat Anda ingin membuat daftar baru berdasarkan nilai dari daftar yang ada

Pemahaman daftar terdiri dari tanda kurung yang berisi ekspresi yang dieksekusi untuk setiap elemen dan perulangan for untuk mengulangi setiap elemen

Anda dapat menggunakan pemahaman daftar untuk membuat daftar baru dengan meratakan daftar yang sudah ada

original_list = [[11, 21, 30], [19, 63, 71], [81, 99]]

flatten_list = [element for sublist in original_list for element in sublist]

print("Original list", original_list)

print("Flattened list", flatten_list)

Keluaran

Original list [[11, 21, 30], [19, 63, 71], [81, 99]]

Flattened list [11, 21, 30, 19, 63, 71, 81, 99]
_

Anda dapat melihat bahwa kami telah meratakan daftar.  

Pemahaman daftar menyediakan cara ringkas untuk membuat daftar

Pendekatan 2. Menggunakan itertools

Menggunakan itertools sangat ideal untuk mengubah daftar 2D menjadi satu daftar datar. Ini karena ia memperlakukan urutan yang berurutan sebagai urutan tunggal dengan mengulang melalui iterable yang diteruskan sebagai argumen secara berurutan

import itertools

original_list = [[11, 21, 30], [19, 63, 71], [81, 99]]

flatten_list = list(itertools.chain(*original_list))

print("Original list", original_list)

print("Flattened list", flatten_list)

Keluaran

Original list [[11, 21, 30], [19, 63, 71], [81, 99]]

Flattened list [11, 21, 30, 19, 63, 71, 81, 99]
_

Dan kami mendapat daftar rata di output

Meskipun itertools adalah cara yang efektif untuk meratakan daftar, ini lebih maju daripada pendekatan terakhir yang telah kita bahas

Ini karena Anda harus mengimpor itertools ke dalam kode Anda yang memperkenalkan ketergantungan baru. Selain itu, metode chain() melibatkan pembongkaran yang mungkin sulit untuk dipahami

Pendekatan 3. Menggunakan numpy (concatenate() dan flat())

Untuk meratakan daftar daftar dengan Python, gunakan np. gabungkan() dan np. fungsi datar()

Numpy menawarkan operasi umum, termasuk menggabungkan array 2D reguler berdasarkan baris atau kolom. Kami juga menggunakan atribut flat untuk mendapatkan iterator 1D di atas array untuk mencapai tujuan kami

import numpy as np

original_list = [[11, 21, 30], [19, 63, 71], [81, 99]]

flatten_list = list(np.concatenate(original_list).flat)

print("Original list", original_list)

print("Flattened list", flatten_list)
_

Keluaran

Original list [[11, 21, 30], [19, 63, 71], [81, 99]]

Flattened list [11, 21, 30, 19, 63, 71, 81, 99]
_

Anda dapat melihat bahwa kita meratakan daftar asli menjadi daftar rata menggunakan list(), np. gabungkan(), dan np. datar() metode

Kesimpulan

Pendekatan terbaik untuk meratakan daftar daftar dengan Python adalah dengan menggunakan pemahaman daftar. Ini akan membuat daftar rata baru dari yang sudah ada

Bagaimana Anda meratakan daftar daftar dengan pemahaman daftar?

Untuk meratakan daftar daftar, gunakan pernyataan pemahaman daftar [x for l in lst for x in l] . Untuk memodifikasi semua elemen dalam daftar daftar (mis. g. , tingkatkan satu per satu), gunakan pemahaman daftar pemahaman daftar [[x+1 for x in l] for l in lst].

Apa yang dilakukan flatten () dengan Python?

flatten() fungsi. Fungsi flatten() digunakan untuk mendapatkan salinan dari larik tertentu yang diciutkan menjadi satu dimensi . 'C' berarti meratakan dalam urutan baris-utama (gaya-C). 'F' berarti meratakan dalam urutan kolom-utama (Fortran-style).

Bagaimana Anda meratakan daftar bersarang bersarang di Python?

Berikan dua argumen ke metode sum(). my_list dan daftar kosong (mis. e. [ ] ) . sum() menggabungkan my_list dan [ ] untuk menghasilkan daftar yang rata.

Bagaimana Anda meratakan daftar bersarang daftar angka )?

Anda dapat meratakan daftar Python menggunakan pemahaman daftar, pengulangan for bersarang, dan itertools. metode rantai() . Pemahaman daftar adalah metode yang paling "Pythonic" dan karena itu disukai dalam banyak kasus. Meskipun for loop bersarang efektif, mereka menggunakan lebih banyak baris kode daripada pemahaman daftar.