Python nám poskytuje rôzne spôsoby obrátenia zoznamu. Prejdeme si niektoré z mnohých techník, ako vytvoriť zoznam Python možno obrátiť.
Príklad:
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.>
Obrátenie zoznamu v Pythone
Nižšie sú uvedené prístupy, ktorým sa budeme venovať v tomto článku:
- Pomocou krájanie technika
- Obrátenie zoznamu výmenou aktuálneho a posledného čísla naraz
- Pomocou obráteného() a obrátiť () vstavaná funkcia
- Pomocou a dvojbodový prístup
- Pomocou vložiť() funkciu
- Použitím porozumenie zoznamu
- Obrátenie zoznamu pomocou Numpy
1. Obrátiť Zoznam pomocou techniky krájania
Pri tejto technike sa vytvorí kópia zoznamu a zoznam sa netriedi na mieste. Vytvorenie kópie vyžaduje viac miesta na uloženie všetkých existujúcich prvkov. Tým sa vyčerpá viac pamäte. Tu používame krájanie technika na zvrátenie nášho zoznamu v Pythone.
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))> |
>
>Výkon
[15, 14, 13, 12, 11, 10]>
Časová zložitosť: O(n)
Pomocný priestor: O(n)
2. Obrátiť zoznam výmenou súčasného a posledného čísla naraz
Tu je prístup:
Ak je arr[], veľkosť, ak je dĺžka poľa 1, vráťte arr. elif dĺžka poľa je 2, zameňte prvé a posledné číslo a vráťte arr. v opačnom prípade inicializujte i=0. Slučka za i vo veľkosti//2, potom zameňte prvé aktuálne a posledné aktuálne číslo, ak indexy prvého a nasledujúceho čísla nie sú rovnaké, potom zameňte ďalšie a posledné z nasledujúcich čísel, potom zvýšte i+=2 a po slučke vráťte 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> |
dátová štruktúra
>
>Výkon
Original list: [1, 2, 3, 4, 5] Reversed list: [5, 4, 3, 2, 1]>
Časová zložitosť: O(log2(n)), kde n je dĺžka daného poľa.
Pomocný priestor: O(1)
3. Obrátený zoznam pomocou vstavanej funkcie Reverse() a Reverse().
Použitím obrátené () zoznam môžeme obrátiť a a list_reverseiterator je vytvorený objekt, z ktorého môžeme pomocou castingu typu list() vytvoriť zoznam. Alebo môžeme použiť aj zoznam obrátiť () funkcia na prevrátenie zoznamu na mieste.
Python3
c štruktúra v štruktúre
lst> => [> 10> ,> 11> ,> 12> ,> 13> ,> 14> ,> 15> ]> lst.reverse()> print> (> 'Using reverse() '> , lst)> print> (> 'Using reversed() '> ,> list> (> reversed> (lst)))> |
>
>Výkon
Using reverse() [15, 14, 13, 12, 11, 10] Using reversed() [10, 11, 12, 13, 14, 15]>
Časová zložitosť: O(n), kde n je dĺžka zoznamu lst.
Pomocný priestor: O(1), pretože upravuje pôvodný zoznam na mieste a nevytvára nový zoznam.
4. Obráťte zoznam pomocou dvojbodového prístupu
V tejto metóde deklarujeme dva ukazovatele (v podstate počiatočný index a koncový index, nech „vľavo“ a „vpravo“). Počas skenovania zoznamu v každej iterácii vymeníme prvky v indexe „vľavo“ a „vpravo“.
„Ľavý“ ukazovateľ sa posunie dopredu a „pravý“ sa posunie dozadu. V procese budeme pokračovať až do „prvého“ <„posledného“. Toto bude fungovať pre párny počet prvkov aj pre nepárny počet prvkov.
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))> |
>
>Výkon
[7, 6, 5, 4, 3, 2, 1]>
Časová zložitosť : O(N)
Pomocný priestor: O(1)
5. Obráťte zoznam pomocou funkcie insert().
Pri tejto metóde nevrátime zoznam na mieste (neupravíme pôvodný zoznam), ani nevytvoríme jeho kópiu zoznam . Namiesto toho stále vkladáme položky na 0. index zoznamu, čím sa zoznam automaticky obráti.
Python3
salman khan khan vek
# 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)> |
>
>Výkon
[15, 14, 13, 12, 11, 10]>
Časová zložitosť: O(n)
Pomocný priestor: O(n), kde n je dĺžka zoznamu.
6. Obrátiť zoznam pomocou funkcie List Comprehension
Pri tejto technike nie je zoznam usporiadaný na mieste. Kópia pôvodného poľa sa nevyžaduje. Používame porozumenie zoznamu obrátiť pole a vrátiť zoznam.
Nájdeme dĺžku poľa a potom cez ňu iterujeme pomocou rozsahu. Teraz, aby sme nahradili posledný prvok prvým, odpočítame dĺžku pôvodného zoznamu od indexu iterátora.
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)> |
>
>Výkon
[15, 14, 13, 12, 11, 10]>
Časová zložitosť: O(n), kde n je dĺžka pôvodného_zoznamu.
Pomocný priestor: O(n),
7. Obrátiť zoznam pomocou Numpy
Tu budeme používať nudný balík :
Inicializujte vstupný zoznam my_listKonvertujte my_list na 1D numpy pole pomocou np.array(my_list)Obrátte poradie poľa pomocou my_array[::-1]Konvertujte obrátené nemotorný pole späť na zoznam pomocou .tolist()
Vytlačte obrátený zoznam
Python3
git pridať všetko
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)> |
>
>
Výkon:
[9, 8, 7, 6, 5, 4]>
Časová zložitosť: O(n)
Pomocný priestor: O(n)
Diskutovali sme o mnohých spôsoboch obrátenia zoznamu v Pythone. Spomenuli sme aj ich časovú zložitosť a pomocný priestor, aby ste mali správnu predstavu o rýchlosti ich spracovania.
Dúfam, že vám tento článok pomohol pochopiť spôsoby ako zvrátiť zoznam pythonov? a zoznam v Pythone jednoducho prevrátite.