logo

Python — saplacināt sarakstu atsevišķiem elementiem

Šajā rakstā mēs uzzināsim, kā saplacināt sarakstu sarakstu, izmantojot Python sarakstu.

Dažreiz, strādājot ar Python sarakstu, mums var rasties problēma, kurā mums ir jāveic saraksta saplacināšana, t.i., jauktais saraksts jāpārvērš saplacinātā sarakstā. Tam var būt lietojumprogrammas domēnos, kuros kā ievade tiek izmantoti 1D saraksti.



Apspriedīsim dažus veidus, kā šo uzdevumu var veikt.

Piemērs:

  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.>

Kā saplacināt sarakstu līdz atsevišķiem elementiem programmā Python

Tālāk ir norādītas metodes, kuras mēs apskatīsim sadaļā Kā saplacināt sarakstu sarakstu Python:



  • Saplacināt sarakstu, izmantojot saraksta izpratne
  • Saplacināt sarakstu, izmantojot summa ()
  • Saplacināt sarakstu, izmantojot cilpa
  • Saplacināt sarakstu, izmantojot flatten() metode
  • Saplacināt sarakstu, izmantojot ķēde () ar isinstance ()
  • Saplacināt sarakstu, izmantojot samazināt () funkciju
  • Salīdzināt sarakstu, izmantojot groupby
  • Saplacināt sarakstu, izmantojot itertools.chain.from_iterable()
  • Salīdzināt sarakstu, izmantojot rekursiju

1. Saraksta izpratnes izmantošana, lai izlīdzinātu sarakstu sarakstu

Lūk, mēs izmantojam saraksta izpratne lai saplacinātu sarakstu no 2D uz 1D.

Python3






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

java komentāri

>

>

Izvade:

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

Laika sarežģītība: O(n) kur n ir elementu skaits sarakstā
Palīgtelpa: O(n) kur n ir elementu skaits sarakstā

2. Funkcijas sum() izmantošana, lai saplacinātu sarakstu sarakstu

Šeit mēs izmantojam summa() funkcija kurā mēs nodevām test_list kā iterējamu objektu kā pirmo parametru un otro parametru kā tukšu sarakstu, kurā tas saglabā elementu.

Python3




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

>

>

Izvade:

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

Laika sarežģītība: O(n), kur n ir saraksta testa_saraksts garums.
Palīgtelpa: O(n) tiek izveidota papildu telpa ar izmēru n, kur n ir elementu skaits sarakstā

3. Izmantojot f vai Loop to Saplaciniet sarakstu sarakstu

Lai veiktu šo uzdevumu, var izmantot iepriekš minēto funkciju kombināciju. Šajā gadījumā mēs pārbaudām saraksta gadījumu un to saplacinām, bet pārējos elementus nežēlīgi pievienojam sarakstam.

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))>

>

>

Izvade:

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

Laika sarežģītība: Šīs funkcijas vērtība ir O(n), kur n ir kopējais elementu skaits ligzdotajā sarakstā.
Telpas sarežģītība: Šīs funkcijas vērtība ir arī O(n), jo katram rekursīvajam izsaukumam tiek izveidots jauns saraksta temps, lai saglabātu saplacinātu apakšsarakstu, un galīgais saplacinātais saraksts tiek saglabāts mainīgajā res.

4. Izmantojot flatten() metodi, lai saplacinātu sarakstu sarakstu

Pandas flatten() atgriež masīva kopiju, kas sakļauta vienā dimensijā.

Python3

ubuntu kura komanda




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

>

>

Izvade:

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

5. U dziedāt ķēdi() ar isinstance() lai saplacinātu sarakstu sarakstu

Tas ir vēl viens veids, kā šo uzdevumu var veikt. Šajā, kuras mēs veicam iterācijas uzdevumu, izmantojot ķēde () un pārbaudīt gadījumu sarakstu , kas tiek darīts, izmantojot isinstance () .

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))>

>

>

Izvade:

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

Laika sarežģītība: O(n)
Palīgtelpa: O(n)

6. Funkcijas samazināšana() izmantošana, lai saplacinātu sarakstu sarakstu

The samazināt () funkcija ir definēta funkcionālie rīki modulis. Tas dotajā secībā nepārtraukti lieto divu argumentu funkciju un atgriež vienu vērtību.

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>

>

>

Izvade:

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

Laika sarežģītība: O(n)
Palīgtelpa: O(n)

7. Izmantojot groupby, lai saplacinātu sarakstu sarakstu

Importēt groupby modulis no itertorīki . Definējiet sarakstu test_list. Definējiet res mainīgo kā tukšu sarakstu. Izmantojiet ligzdotu cilpu, lai atkārtotu testa_saraksta elementus.

Katram elementam pārbaudiet, vai tas ir saraksts vai nē. Ja tas ir saraksts, atkārtojiet katru saraksta elementu un pievienojiet to mainīgajam res. Ja tas nav saraksts, pievienojiet elementu tieši mainīgajam res.

Drukājiet res mainīgo kā saplacinātu sarakstu.

mans flikseris

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.>

>

>

Izvade:

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

Laika sarežģītība: Koda laika sarežģītība ir O(n), kur n ir elementu skaits ievades sarakstā. Ligzdotā cilpa atkārto katru ievades saraksta elementu tieši vienu reizi.
Kosmosa sarežģītība: Koda telpas sarežģītība ir O(n), kur n ir elementu skaits ievades sarakstā. Mainīgais res tiek izmantots, lai saglabātu saplacinātu sarakstu, kurā var būt ne vairāk kā n elementi.

8. Izmantojot itertools.chain.from_iterable(), lai saplacinātu sarakstu sarakstu

Šajā piemērā tālāk norādītais kods izmanto itertools.chain.from_iterable() metode, lai saplacinātu ligzdotu sarakstu.

Sadalīsim kodu un paskaidrosim: tālāk norādītajā kodā tiek izmantots 'itertools.chain.from_iterable()', lai saplacinātu ligzdoto sarakstu ('nested_list') vienā sarakstā ('flattened_list'), un pēc tam izdrukā rezultātu.

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)>

>

>

Izvade:

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

Laika sarežģītība: O(n)
Palīgtelpa: O(n)

9. Izmantojot rekursiju uz Saplaciniet sarakstu sarakstu

Šajā piemērā tālāk norādītais kods definē funkciju flatten_list, kas izmanto ligzdotu sarakstu kā ievadi un atgriež saplacinātu sarakstu ar atsevišķiem elementiem. Izlīdzināšana tiek panākta, izmantojot rekursija .

Python3


java kartes



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)>

>

>

Izvade:

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

Laika sarežģītība: O(n)
Palīgtelpa: O(n)

Mēs esam apskatījuši 9 veidus, kā saplacināt sarakstu sarakstu. Saraksta saplacināšana programmā Python tiek izmantota, lai pārvērstu ligzdoto sarakstu sarakstu vienā sarakstā. Varat izmantot jebkuru no iepriekš minētajām metodēm, lai izlīdzinātu sarakstu atbilstoši savām prasībām.

Līdzīgi lasījumi:

  • Saistītā saraksta saplacināšana
  • Python programma saistītā saraksta saplacināšanai
  • Python | Grupēta saraksta saplacināšana