Python nam ponuja različne načine obračanja seznama. Preučili bomo nekaj od številnih tehnik, kako narediti seznam Python se lahko obrne.
primer:
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.>
Obračanje seznama v Pythonu
Spodaj so pristopi, ki jih bomo obravnavali v tem članku:
- Uporabljati rezanje tehnika
- Obračanje seznama z zamenjavo trenutne in zadnje številke naenkrat
- Z uporabo reversed() in obratno() vgrajeno funkcijo
- Uporaba a dvotočkovni pristop
- Uporabljati vstavi() funkcijo
- Uporaba razumevanje seznama
- Obračanje seznama z uporabo Numpy
1. Vzvratno Seznam z uporabo tehnike rezanja
Pri tej tehniki se naredi kopija seznama in seznam ni razvrščen na mestu. Ustvarjanje kopije zahteva več prostora za vse obstoječe elemente. To izčrpa več pomnilnika. Tukaj uporabljamo rezanje tehnika za obračanje našega seznama v Pythonu.
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))> |
>
>Izhod
[15, 14, 13, 12, 11, 10]>
Časovna zahtevnost: O(n)
Pomožni prostor: O(n)
2. Obrnite seznam z zamenjavo sedanje in zadnje številke naenkrat
Tukaj je pristop:
Če arr[], velikost, če je dolžina niza 1, nato vrni arr. elif dolžina niza je 2, zamenjaj prvo in zadnjo številko in vrni arr. sicer inicializirajte i=0. Zanka za i v velikosti//2, nato zamenjajte prvo sedanje in zadnje sedanje število, če indeksa prve in naslednje številke nista enaka, nato zamenjajte naslednjo in zadnjo od naslednjih številk, nato povečajte i+=2 in po zanki vrnite 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> |
>
>Izhod
Original list: [1, 2, 3, 4, 5] Reversed list: [5, 4, 3, 2, 1]>
Časovna zapletenost: O(log2(n)), kjer je n je dolžina podane matrike.
Pomožni prostor: O(1)
ubuntu build bistveno
3. Obrnite seznam z vgrajenima funkcijama Reversed() in Reverse().
Uporaba obrnjeno() seznam lahko obrnemo in a list_reverseiterator ustvarjen je objekt, iz katerega lahko ustvarimo seznam s pretvorbo vrste list(). Lahko pa uporabimo tudi seznam obratno() funkcijo za obračanje seznama na mestu.
Python3
lst> => [> 10> ,> 11> ,> 12> ,> 13> ,> 14> ,> 15> ]> lst.reverse()> print> (> 'Using reverse() '> , lst)> print> (> 'Using reversed() '> ,> list> (> reversed> (lst)))> |
>
>Izhod
Using reverse() [15, 14, 13, 12, 11, 10] Using reversed() [10, 11, 12, 13, 14, 15]>
Časovna zahtevnost: O(n), kjer je n dolžina seznama lst.
Pomožni prostor: O(1), ker spremeni prvotni seznam na mestu in ne ustvari novega seznama.
4. Obrnite seznam z uporabo pristopa dveh kazalcev
V tej metodi bomo deklarirali dva kazalca (v bistvu začetni indeks in končni indeks, pustimo 'levo' in 'desno'). Med skeniranjem seznama bomo v vsaki iteraciji zamenjali elemente na indeksu 'levo' in 'desno'.
Kazalec 'levo' se bo premaknil naprej, kazalec 'desno' pa nazaj. Postopek bomo nadaljevali do 'prvi' <'zadnji'. To bo delovalo tako za sodo število elementov kot tudi za liho število elementov.
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))> |
>
>Izhod
[7, 6, 5, 4, 3, 2, 1]>
Časovna zapletenost : O(N)
Pomožni prostor: O(1)
5. Obrnite seznam s funkcijo insert().
Pri tej metodi ne obrnemo seznama na mestu (spremenimo izvirnega seznama) niti ne ustvarimo nobene kopije seznam . Namesto tega še naprej vstavljamo elemente na 0. indeks seznama, kar bo samodejno obrnilo seznam.
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)> |
>
>Izhod
[15, 14, 13, 12, 11, 10]>
Časovna zahtevnost: O(n)
Pomožni prostor: O(n), kjer je n dolžina seznama.
6. Obrnite seznam s pomočjo razumevanja seznama
Pri tej tehniki seznam ni razvrščen na mestu. Kopija izvirne matrike ni potrebna. Uporabljamo razumevanje seznama da obrnete matriko in vrnete seznam.
Poiščemo dolžino matrike in jo nato ponovimo z uporabo obsega. Zdaj, da zamenjamo zadnji element s prvim, odštejemo dolžino prvotnega seznama od indeksa iteratorja.
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)> |
>
>Izhod
[15, 14, 13, 12, 11, 10]>
Časovna zahtevnost: O(n), kjer je n dolžina izvirnega_seznama.
Pomožni prostor: O(n),
7. Obrnite seznam z uporabo Numpy
Tukaj bomo uporabili paket numpy :
Inicializirajte vhodni seznam my_list Pretvorite my_list v 1D matriko numpy z uporabo np.array(my_list) Obrni vrstni red matrike z uporabo my_array[::-1]Pretvori obrnjeno numpy niz nazaj na seznam z uporabo .tolist()
Natisnite obrnjen seznam
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)> |
>
>
Izhod:
[9, 8, 7, 6, 5, 4]>
Časovna zahtevnost: O(n)
Pomožni prostor: O(n)
Razpravljali smo o številnih načinih obračanja seznama v Pythonu. Omenili smo tudi njihovo časovno zapletenost in pomožni prostor, da bi vam dali pravo predstavo o njihovi hitrosti obdelave.
Upam, da vam je ta članek pomagal razumeti načine kako obrniti seznam python? in enostavno boste obrnili seznam v Pythonu.