logo

Saraksta apvēršana Python

Python piedāvā dažādus veidus, kā mainīt sarakstu. Mēs apskatīsim dažas no daudzajām metodēm, kā izveidot sarakstu Python var apgriezt.

Piemērs:



  Input:   list = [4, 5, 6, 7, 8, 9]   Output:   [9, 8, 7, 6, 5, 4]   Explanation:   The list we are having in the output is reversed to the list we have in the input.>

Saraksta apvēršana Python

Tālāk ir norādītas pieejas, kuras mēs apskatīsim šajā rakstā.

  • Izmantojot sagriešana tehnika
  • Apgriezt sarakstu, vienlaikus apmainot pašreizējos un pēdējos numurus
  • Izmantojot reverse() un reverse() iebūvēta funkcija
  • Izmantojot a divu punktu pieeja
  • Izmantojot ievietot () funkciju
  • Izmantojot saraksta izpratne
  • Saraksta apgriešana, izmantojot Numpy

1. Reverss Saraksts, izmantojot sagriešanas paņēmienu

Izmantojot šo paņēmienu, tiek izveidota saraksta kopija, un saraksts netiek sakārtots vietā. Lai izveidotu kopiju, ir nepieciešams vairāk vietas, lai saglabātu visus esošos elementus. Tas izsmeļ vairāk atmiņas. Šeit mēs izmantojam sagriešana tehnika, lai mainītu mūsu sarakstu Python.

Python3








# Reversing a list using slicing technique> def> Reverse(lst):> >new_lst>=> lst[::>->1>]> >return> new_lst> lst>=> [>10>,>11>,>12>,>13>,>14>,>15>]> print>(Reverse(lst))>

>

>

Izvade

[15, 14, 13, 12, 11, 10]>

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

2. Apgrieztais saraksts, vienlaikus apmainot pašreizējos un pēdējos numurus

Šeit ir pieeja:

Ja arr[], izmērs, ja masīva garums ir 1, tad atgriež arr. elif masīva garums ir 2, samainiet pirmo un pēdējo numuru un atgriezieties arr. pretējā gadījumā inicializējiet i=0. Atkārtojiet cilpu ar i izmērā//2, pēc tam samainiet pirmo pašreizējo un pēdējo esošo skaitļu skaitu, ja pirmā un nākamā skaitļa indeksi nav vienādi, pēc tam apmainiet nākamo un pēdējo no nākamajiem cipariem, pēc tam palieliniet i+=2 un pēc cilpas atkārtojiet arr.

Python3




#Python program to reverse an array> def> list_reverse(arr,size):> >#if only one element present, then return the array> >if>(size>=>=>1>):> >return> arr> > >#if only two elements present, then swap both the numbers.> >elif>(size>=>=>2>):> >arr[>0>],arr[>1>],>=>arr[>1>],arr[>0>]> >return> arr> > >#if more than two elements presents, then swap first and last numbers.> >else>:> >i>=>0> >while>(i//2): #swap present and preceding numbers at time and jump to second element after swap arr[i],arr[size-i-1]=arr[size-i-1],arr[i] #skip if present and preceding numbers indexes are same if((i!=i+1 and size-i-1 != size-i-2) and (i!=size-i-2 and size-i-1!=i+1)): arr[i+1],arr[size-i-2]=arr[size-i-2],arr[i+1] i+=2 return arr arr=[1,2,3,4,5] size=5 print('Original list: ',arr) print('Reversed list: ',list_reverse(arr,size)) #This contributed by SR.Dhanush>

>

>

Izvade

Original list: [1, 2, 3, 4, 5] Reversed list: [5, 4, 3, 2, 1]>

Laika sarežģītība: O(log2(n)), kur n ir dotā masīva garums.
Palīgtelpa: O(1)

3. Apgrieztais saraksts, izmantojot iebūvētās funkcijas Reversed() un Reverse().

Izmantojot apgriezts () mēs varam apgriezt sarakstu un a list_reverseiterator tiek izveidots objekts, no kura varam izveidot sarakstu, izmantojot list() tipa liešanu. Vai arī mēs varam izmantot sarakstu reverse() funkciju, lai apgrieztu sarakstu vietā.

Python3




lst>=> [>10>,>11>,>12>,>13>,>14>,>15>]> lst.reverse()> print>(>'Using reverse() '>, lst)> print>(>'Using reversed() '>,>list>(>reversed>(lst)))>

>

>

Izvade

Using reverse() [15, 14, 13, 12, 11, 10] Using reversed() [10, 11, 12, 13, 14, 15]>

Laika sarežģītība: O(n), kur n ir saraksta garums lst.
Palīgtelpa: O(1), jo tas maina sākotnējo sarakstu vietā un nerada jaunu sarakstu.

4. Apgrieziet sarakstu, izmantojot divu punktu pieeju

Šajā metodē mēs deklarēsim divus rādītājus (būtībā sākuma indeksu un beigu indeksu, ļaujiet “pa kreisi” un “pa labi”). Skenējot sarakstu, katrā iterācijā mēs apmainīsim elementus indeksā “pa kreisi” un “pa labi”.

Rādītājs “kreisais” virzīsies uz priekšu, bet “labais” – atpakaļ. Mēs turpināsim procesu līdz 'pirmais' <'pēdējais'. Tas darbosies gan pāra elementu skaitam, gan nepāra elementu skaitam.

Linux make komanda

Python3




# Reversing a list using two-pointer approach> def> reverse_list(arr):> >left>=> 0> >right>=> len>(arr)>->1> >while> (left # Swap temp = arr[left] arr[left] = arr[right] arr[right] = temp left += 1 right -= 1 return arr arr = [1, 2, 3, 4, 5, 6, 7] print(reverse_list(arr))>

>

>

Izvade

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

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

5. Apgriezt sarakstu, izmantojot funkciju insert().

Izmantojot šo metodi, mēs nedz apvēršam sarakstu vietā (modificējam sākotnējo sarakstu), nedz arī izveidojam kopijas sarakstu . Tā vietā mēs turpinām ievietot vienumus saraksta 0. rādītājā. Tas automātiski apgriezīs sarakstu.

Python3




# input list> lst>=> [>10>,>11>,>12>,>13>,>14>,>15>]> # the above input can also be given as> # lst=list(map(int,input().split()))> l>=> []># empty list> # iterate to reverse the list> for> i>in> lst:> ># reversing the list> >l.insert(>0>, i)> # printing result> print>(l)>

>

>

Izvade

[15, 14, 13, 12, 11, 10]>

Laika sarežģītība: O(n)
Palīgtelpa: O(n), kur n ir saraksta garums.

6. Apgrieziet sarakstu, izmantojot saraksta izpratni

Izmantojot šo paņēmienu, saraksts nav sakārtots vietā. Oriģinālā masīva kopija nav nepieciešama. Mēs izmantojam saraksta izpratne lai apgrieztu masīvu un atgrieztu sarakstu.

Mēs atrodam masīva garumu un pēc tam atkārtojam to, izmantojot diapazonu. Tagad, lai aizstātu pēdējo elementu ar pirmo, mēs atņemam sākotnējā saraksta garumu no iteratora indeksa.

Python3




original_list>=> [>10>,>11>,>12>,>13>,>14>,>15>]> new_list>=> [original_list[>len>(original_list)>-> i]> >for> i>in> range>(>1>,>len>(original_list)>+>1>)]> print>(new_list)>

>

>

Izvade

[15, 14, 13, 12, 11, 10]>

Laika sarežģītība: O(n), kur n ir sākotnējā_saraksta garums.
Palīgtelpa: O(n),

7. Apgrieziet sarakstu, izmantojot Numpy

Šeit mēs izmantosim netīrs iepakojums :

Inicializēt ievades sarakstu my_listPārveidot manu_sarakstu par 1D masīvu, izmantojot np.array(my_list)Apgriezt masīva secību, izmantojot my_array[::-1]Konvertēt apgriezto nejutīgs masīvs atpakaļ uz sarakstu, izmantojot .tolist()

Izdrukājiet apgriezto sarakstu

Python3




import> numpy as np> # Input list> my_list>=> [>4>,>5>,>6>,>7>,>8>,>9>]> # Convert the list to a 1D numpy array> my_array>=> np.array(my_list)> # Reverse the order of the array> reversed_array>=> my_array[::>->1>]> # Convert the reversed array to a list> reversed_list>=> reversed_array.tolist()> # Print the reversed list> print>(reversed_list)>

>

>

Izvade:

[9, 8, 7, 6, 5, 4]>

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

Mēs esam apsprieduši daudzus veidus, kā mainīt sarakstu Python. Mēs esam pieminējuši arī to laika sarežģītību un palīgtelpu, lai sniegtu jums pareizu priekšstatu par to apstrādes ātrumu.

Cerams, ka šis raksts palīdzēja jums saprast, kā rīkoties kā mainīt python sarakstu? un jūs viegli apvērsiet sarakstu Python.