Cara meratakan daftar dengan python

Ada beberapa cara di mana daftar bersarang dapat dibongkar dan dibuat menjadi daftar datar, beberapa dari pendekatan ini tidak memerlukan perpustakaan sedangkan yang lain menggunakan itertools, functools, dan numpy

1. Perulangan dan Daftar pemahaman

Ini adalah cara termudah untuk meratakan daftar. Ini menggunakan loop for untuk mengulang daftar utama dan loop for bersarang lainnya untuk mengulang elemen daftar utama

nested_list = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
flat_list = []
for sublist in nested_list:
  for element in sublist:
    flat_list.append(element)
print(flat_list)

Keluaran

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

Versi yang lebih pendek dari ini menggunakan pemahaman daftar

flat_list = [element for sublist in nested_list for element in sublist]

Alternatifnya, extend() dapat digunakan untuk membuat daftar yang dihasilkan tanpa loop bersarang

flat_list = []
for sublist in nested_list:
  flat_list.extend(element)

2. itertools. rantai(*nested_list)

Itertools adalah bagian dari pustaka standar python dan menyediakan metode untuk membuat daftar datar. Metode rantai mengambil daftar sebagai argumen, oleh karena itu

[[7], [0, 9, 3], [4, 6, 8]]
[["lorem", "ipsum", "seth", "sir"], ["domat", "texeto", "do"]]
5 digunakan untuk membongkar daftar, baca lebih lanjut tentang *args di sini, nilai kembaliannya adalah iterator dan bukan daftar, menggunakan daftar() dipaksa untuk menghasilkan semua elemen

import itertools

nested_list = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
flat_list = itertools.chain(*nested_list)
flat_list  = list(flat_list)

3. itertools. rantai. from_iterable(nested_list)

Mirip dengan itertools. chain() tetapi mengambil daftar bersarang sebagai argumen

import itertools

nested_list = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
flat_list = itertools.chain.from_iterable(nested_list)
flat_list  = list(flat_list)
_

4. functools. kurangi(fungsi, nested_list)

reduce() bekerja dengan menerapkan fungsi ke dua elemen iterable secara kumulatif

from functools import reduce

nested_list = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
flat_list = reduce(lambda x, y: x+y, nested_list)

Alternatifnya, alih-alih menulis fungsi lambda, built-in dapat digunakan

import operator
from functools import reduce

nested_list = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
flat_list = reduce(operator.concat, nested_list)
_

5. numpy. menggabungkan(nested_list)

Mengembalikan daftar gabungan, bukan iterator

[[7], [0, 9, 3], [4, 6, 8]]
[["lorem", "ipsum", "seth", "sir"], ["domat", "texeto", "do"]]
_0

6. numpy. array(daftar_bersarang). datar

Array Numpy memiliki properti flat yang dapat digunakan untuk mendapatkan iterator untuk array yang diratakan tetapi hanya berfungsi jika daftar di dalam daftar bersarang memiliki panjang yang sama

Apa artinya ratakan daftar dengan Python?

Meratakan daftar daftar adalah proses mengubah daftar dua Dimensi menjadi daftar Satu Dimensi dengan menghapus setiap elemen daftar yang disimpan dalam daftar daftar, that is, transforming [[9, 8, 7], [6, 5, 4], [3, 2, 1]] to [9, 8, 7, 6, 5, 4, 3, 2, 1].

Bagaimana cara meratakan daftar daftar?

Meratakan daftar daftar memerlukan mengonversi daftar 2D menjadi daftar 1D dengan menghapus sarang setiap item daftar yang disimpan dalam daftar daftar . e. , mengubah [[1, 2, 3], [4, 5, 6], [7, 8, 9]] menjadi [1, 2, 3, 4, 5, 6, 7, 8, 9].

Bagaimana Anda meratakan daftar ke string dengan Python?

Untuk mengonversi daftar menjadi string, gunakan Pemahaman Daftar Python dan fungsi join() . Pemahaman daftar akan melintasi elemen satu per satu, dan metode join() akan menggabungkan elemen daftar menjadi string baru dan mengembalikannya sebagai output.

Bagaimana Anda menulis ratakan dengan Python?

flatten() function kita dapat meratakan matriks menjadi satu dimensi dengan python. memesan. 'C' berarti meratakan baris-utama. 'F' berarti meratakan kolom-utama. 'A' berarti meratakan urutan kolom-utama jika a Fortran bersebelahan dalam memori, urutan baris-utama sebaliknya.