Panduan untuk Meratakan Daftar & Daftar Daftar dengan Python

Mengubah array 2D menjadi array 1D disebut perataan. Ada banyak pendekatan untuk memecahkan masalah.

Kami akan menjelajahi beberapa di antaranya dalam tutorial ini.

Mari kita lihat contohnya.

Memasukkan

[[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]

Keluaran

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#1. Loop

Cara paling umum untuk menyelesaikan masalah adalah dengan menggunakan loop. Saya pikir sebagian besar dari Anda sudah mendapatkannya. Mari kita lihat langkah-langkah untuk menyelesaikan masalah menggunakan loop.

  • Inisialisasi daftar daftar dengan data dummy dan beri nama sebagai data.
  • Sekarang, inisialisasi daftar kosong bernama flat_list.
  • Ulangi data.
    • Buka kemasan semua elemen dari daftar saat ini.
    • Tambahkan mereka ke flat_list menggunakan metode list append.
  • Cetak hasilnya.

Lihat kode untuk masalah di bawah ini.

# initializing the data and an empty list
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]
flat_list = []

# iterating over the data
for item in data:
    # appending elements to the flat_list
    flat_list += item

# printing the resultantn flat_list
print(flat_list)

Anda dapat menggunakan loop lain untuk menambahkan elemen sub-daftar ke flat_list alih-alih operator gabungan. Kita juga bisa menggunakan daftar pemahaman alih-alih loop.

  Bagaimana cara menginstal Gnome 40 di Debian 11

Keduanya melakukan pekerjaan yang sama. Mari kita lihat cara selanjutnya untuk menyelesaikan masalah.

#2. Itertools – Rantai

Kami akan menggunakan metode yang disebut rantai dari modul bawaan itertools.

Rantai metode mengulang setiap sub-daftar dan mengembalikan elemen sampai tidak ada lagi sub-daftar di dalamnya. Ini mengembalikan iterable yang harus kita ubah menjadi daftar.

Mari kita lihat langkah-langkah yang terlibat dalam memecahkan masalah.

  • Inisialisasi daftar daftar dengan data dummy dan beri nama sebagai data.
  • Dapatkan ratakan iterable menggunakan itertools.chain(*data).
  • Konversikan iterable yang dihasilkan ke dalam daftar.
  • Cetak daftar ratakan.

Anda dapat melihat kode di cuplikan di bawah ini.

# importing the module
import itertools

# initializing the data
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]

# flattening the list and storing the result
flat_list = itertools.chain(*data)

# converting iterable to list and printing
print(list(flat_list))

#3. Ratakan Daftar Multi-Level

Kami telah melihat cara meratakan daftar daftar. Metode di atas yang telah kita bahas untuk meratakan daftar tidak akan berfungsi untuk daftar bertingkat. Mari kita lihat contohnya.

  Cara Memasang dan Menggunakan Papan Ketik Pihak Ketiga di iPhone dan iPad

Memasukkan

[1, [2, 3, [4, 5]], 6, [[7], [8, 9]]]

Keluaran

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Karena kita tidak mengetahui kedalaman daftar sebelum program, kita harus menggunakan rekursi untuk menyelesaikan masalah.

  • Inisialisasi data seperti yang ditunjukkan pada contoh dan beri nama sebagai data.
  • Inisialisasi daftar kosong yang disebut flat_list.
  • Tulis fungsi yang disebut flatten_list.
    • Ulangi elemen-elemen dari daftar yang diberikan.
    • Jika elemennya adalah daftar, maka panggil kembali fungsi yang sama secara rekursif.
    • Jika elemen tersebut bukan daftar, maka tambahkan elemen tersebut ke flat_list.
  • Panggil fungsi dengan data.
  • Fungsi akan mengisi semua elemen dalam daftar flat_list.
  • Cetak flat_list untuk memeriksa hasilnya.
  Cara Mengubah Wilayah Netflix

Fiuh! banyak langkah untuk kode. Jangan khawatir. Mengubah pernyataan di atas menjadi kode tidak akan memakan waktu lebih dari beberapa menit.

# initializing the data and empty list
data = [1, [2, 3, [4, 5]], 6, [[7], [8, 9]]]
flat_list = []

# function
def flatten_list(data):
    # iterating over the data
    for element in data:
        # checking for list
        if type(element) == list:
            # calling the same function with current element as new argument
            flatten_list(element)
        else:
            flat_list.append(element)

# flattening the given list
flatten_list(data)

# printing the flat_list
print(flat_list)

Ingat, kami tidak mengonversi daftar yang ada. Sebagai gantinya, kami telah membuat daftar baru dengan elemen daftar yang diberikan.

Kesimpulan

Semoga Anda menikmati tutorialnya. Mungkin ada banyak cara lain untuk meratakan daftar dengan Python, tetapi saya merasa cara di atas mungkin yang paling mudah.

Selamat Coding 🙂