Î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:
- Aplatiza lista folosind înțelegerea listei
- Aplatiza lista folosind sumă()
- Aplatiza lista folosind buclă
- Aplatiza lista folosind metoda flatten().
- Aplatiza lista folosind lanţ() cu esteinstanta()
- Aplatiza lista folosind reduce() funcţie
- Aplatizați lista folosind groupby
- Aplatiza lista folosind itertools.chain.from_iterable()
- Aplatizați lista folosind recursiunea
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)> |
f-string python
>
>
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ă
derularea mouse-ului nu funcționează
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> |
>
>
convenția de denumire a java
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.
variabilă globală javascript
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