Python – Aplatizați lista la elemente individuale

În acest articol, vom învăța Cum să aplatizați o listă de liste prin înțelegerea listelor în Python.

Uneori, în timp ce lucrăm cu o listă Python, putem avea o problemă în care trebuie să efectuăm aplatizarea listei, adică să convertim o listă mixtă într-una aplatizată. Aceasta poate avea aplicații în domenii care utilizează liste 1D ca intrare.

Să discutăm anumite moduri în care această sarcină poate fi îndeplinită.

Exemplu:

  Input  : [[1,3, 'geeks'], [4,5], [6, 'best']]   Output  : [1, 3, 'geeks', 4, 5, 6, 'best']   Explaination:   Flattening convert a mixed list to a flattened one. 

Cum să aplatizați lista la elemente individuale în Python

Mai jos sunt metodele pe care le vom acoperi în Cum să aplatizați o listă de liste în Python:

1. Utilizarea listei de înțelegere pentru a aplatiza o listă de liste

Aici, folosim înțelegerea listei pentru a aplatiza lista de la 2D la 1D.

Python3




res> => [i> for> row> in> [[> 1> ,> 3> ,> 'geeks'> ], [> 4> ,> 5> ],> > [> 6> ,> 'best'> ]]> for> i> in> row]> print> (res)>

Ieșire:

[1, 3, 'geeks', 4, 5, 6, 'best'] 

Complexitatea timpului: O(n) unde n este numărul de elemente din listă
Spațiu auxiliar: O(n) unde n este numărul de elemente din listă

2. Utilizarea funcției sum() pentru a aplatiza o listă de liste

Aici, folosim funcția sum(). în care am trecut test_list ca obiect iterabil ca prim parametru și al doilea parametru ca o listă goală în care stochează elementul.

Python3




test_list> => [[> 1> ,> 3> ,> 'gfg'> ], [> 4> ,> 5> ], [> 6> ,> 'best'> ]]> test_list> => sum> (test_list, [])> print> (test_list)>

Ieșire:

[1, 3, 'gfg', 4, 5, 6, 'best'] 

Complexitatea timpului: O(n), unde n este lungimea listei test_list.
Spațiu auxiliar: Se creează O(n) spațiu suplimentar de dimensiune n unde n este numărul de elemente din listă

3. Folosind f sau Buclă la Aplatizați o listă de liste

Combinația dintre funcționalitățile de mai sus poate fi utilizată pentru a îndeplini această sarcină. În aceasta, verificăm o instanță a listei și o aplatăm, iar restul elementelor le adăugăm în listă cu brutalitate.

Python3




def> flatten(test_list):> > if> isinstance> (test_list,> list> ):> > temp> => []> > for> ele> in> test_list:> > temp.extend(flatten(ele))> > return> temp> > else> :> > return> [test_list]> # Initializing list> test_list> => [> 'gfg'> ,> 1> , [> 5> ,> 6> ,> 'geeks'> ],> 67.4> , [> 5> ],> 'best'> ]> # Flatten List to individual elements> # using loop + isinstance()> res> => flatten(test_list)> > # printing result> print> (> 'The List after flattening : '> +> str> (res))>

Ieșire:

The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’] 

Complexitatea timpului: al acestei funcții este O(n), unde n este numărul total de elemente din lista imbricată.
Complexitatea spațiului: a acestei funcții este, de asemenea, O(n), deoarece o nouă listă temp este creată pentru fiecare apel recursiv pentru a stoca sublista aplatizată, iar lista finală aplatizată este stocată în variabila res.

4. Folosind metoda flatten() pentru a aplatiza o listă de liste

panda flatten() returnează o copie a matricei restrânse într-o singură dimensiune.

Python3




from> pandas.core.common> import> flatten> l> => [[> 1> ,> 3> ,> 'gfg'> ], [> 4> ,> 5> ], [> 6> ,> 'best'> ]]> print> (> list> (flatten(l)))>

Ieșire:

[1, 3, 'gfg', 4, 5, 6, 'best'] 

5. U sing chain() cu isinstance() pentru a aplatiza o listă de liste

Acesta este încă un alt mod în care această sarcină poate fi îndeplinită. In acest, care îndeplinim sarcina de iterație folosind lanţ() și verificarea instanțelor din listă , care se face folosind esteinstanta() .

Python3




from> itertools> import> chain> # Initializing list> test_list> => [> 'gfg'> ,> 1> , [> 5> ,> 6> ,> 'geeks'> ],> 67.4> , [> 5> ],> 'best'> ]> # Flatten List to individual elements> # using chain() + isinstance()> res> => list> (chain(> *> [ele> if> isinstance> (ele,> list> )> > else> [ele]> for> ele> in> test_list]))> > # printing result> print> (> 'The List after flattening : '> +> str> (res))>

Ieșire:

The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’] 

Complexitatea timpului: Pe)
Spațiu auxiliar: Pe)

6. Folosind funcția reduce() pentru a aplatiza o listă de liste

The reduce() funcția este definită în functools modul. Acesta aplică o funcție de două argumente continuu pe secvența dată și returnează o singură valoare.

Python3




from> functools> import> reduce> > # Initializing list> test_list> => [[> 1> ,> 3> ,> 'gfg'> ], [> 4> ,> 5> ], [> 6> ,> 'best'> ]]> > # Flatten List to individual elements> # using reduce()> res> => reduce> (> lambda> x,y: x> +> y, test_list)> > # printing result> print> (> 'The List after flattening : '> +> str> (res))> #This code is contributed by Edula Vinay Kumar Reddy>

Ieșire:

The List after Flattening : [1, 3, 'gfg', 4, 5, 6, 'best'] 

Complexitatea timpului: Pe)
Spațiu auxiliar: Pe)

7. Utilizarea groupby pentru a aplatiza o listă de liste

Importă a se grupa cu modul din iertools . Definiți o listă_test de liste. Definiți o variabilă res ca o listă goală. Utilizați o buclă for imbricată pentru a itera elementele listei_test.

Pentru fiecare element, verificați dacă este sau nu o listă. Dacă este o listă, apoi repetați fiecare element al listei și adăugați-l la variabila res. Dacă nu este o listă, adăugați elementul direct la variabila res.

Imprimați variabila res ca listă aplatizată.

Python3




from> itertools> import> groupby> # Initializing list> test_list> => [[> 1> ,> 3> ,> 'gfg'> ], [> 4> ,> 5> ], [> 6> ,> 'best'> ]]> # Flatten List to individual elements> # using groupby()> res> => [i> for> j> in> test_list> for> i> in> (j> if> isinstance> (j,> list> )> else> [j])]> > # printing result> print> (> 'The List after flattening : '> +> str> (res))> #This code is contributed by Rayudu.>

Ieșire:

The List after flattening : [1, 3, 'gfg', 4, 5, 6, 'best'] 

Complexitatea timpului: Complexitatea de timp a codului este O(n), unde n este numărul de elemente din lista de intrare. Bucla imbricată iterează peste fiecare element al listei de intrare exact o dată.
Complexitatea spațiului: Complexitatea spațială a codului este O(n), unde n este numărul de elemente din lista de intrare. Variabila res este folosită pentru a stoca lista aplatizată, care poate avea cel mult n elemente.

8. Utilizarea itertools.chain.from_iterable() pentru a aplatiza o listă de liste

În acest exemplu, codul de mai jos folosește itertools.chain.from_iterable() metodă de a aplatiza o listă imbricată.

Să defalcăm codul și să explicăm: Codul de mai jos folosește `itertools.chain.from_iterable()` pentru a aplatiza o listă imbricată (`ned_list`) într-o singură listă (`flattened_list`), apoi imprimă rezultatul.

Python3




from> itertools> import> chain> nested_list> => [[> 1> ,> 2> ,> 3> ], [> 4> ,> 5> ], [> 6> ,> 7> ,> 8> ]]> flattened_list> => list> (chain.from_iterable(nested_list))> print> (flattened_list)>

Ieșire:

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

Complexitatea timpului: Pe)
Spațiu auxiliar: Pe)

9. Folosirea recursiunii pentru a Aplatizați o listă de liste

În acest exemplu, codul de mai jos definește o funcție flatten_list care ia o listă imbricată ca intrare și returnează o listă aplatizată cu elemente individuale. Aplatizarea se realizează folosind recursiunea .

Python3




def> flatten_list(lst):> > flat_list> => []> > for> item> in> lst:> > if> isinstance> (item,> list> ):> > flat_list.extend(flatten_list(item))> > else> :> > flat_list.append(item)> > return> flat_list> nested_list> => [[> 1> ,> 2> ,> 3> ], [> 4> , [> 5> ,> 6> ]], [> 7> ,> 8> ]]> flattened_list> => flatten_list(nested_list)> print> (flattened_list)>

Ieșire:

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

Complexitatea timpului: Pe)
Spațiu auxiliar: Pe)

Am acoperit 9 moduri totale de a aplatiza o listă de liste. Aplatizarea listelor în Python este folosită pentru a converti o listă de liste imbricate într-o singură listă. Puteți utiliza oricare dintre metodele de mai sus pentru a vă aplatiza lista în funcție de cerințele dvs.

Citiri similare:

  • Aplatizarea unei liste legate
  • Program Python pentru aplatizarea unei liste legate
  • Python | Aplatizarea grupată a listei


S-Ar Putea Să Vă Placă