Python nám poskytuje různé způsoby, jak obrátit seznam. Projdeme si některé z mnoha technik, jak vytvořit seznam Krajta lze obrátit.
Pří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ácení seznamu v Pythonu
Níže jsou uvedeny přístupy, které pokryjeme v tomto článku:
- Za použití krájení technika
- Obrácení seznamu výměnou aktuálního a posledního čísla najednou
- Pomocí reverse() and zvrátit() vestavěná funkce
- Používat dvoubodový přístup
- Za použití vložit() funkce
- Použitím porozumění seznamu
- Obrácení seznamu pomocí Numpy
1. Reverzní Seznam pomocí techniky krájení
Při této technice se vytvoří kopie seznamu a seznam se netřídí na místě. Vytvoření kopie vyžaduje více místa pro uložení všech existujících prvků. To vyčerpává více paměti. Zde používáme krájení technika pro obrácení našeho seznamu v Pythonu.
Python3
seznam jako pole
# 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ýstup
[15, 14, 13, 12, 11, 10]>
Časová složitost: Na)
Pomocný prostor: Na)
2. Obrátit seznam výměnou aktuálního a posledního čísla najednou
Zde je přístup:
Pokud je arr[], size, pokud je délka pole 1, vrátí arr. elif délka pole je 2, prohoďte první a poslední číslo a vraťte arr. jinak inicializujte i=0. Smyčka za i ve velikosti//2, pak prohoďte první současné a poslední aktuální číslo, pokud index prvního a dalšího čísla nejsou stejné, pak prohoďte další a poslední z následujících čísel, poté zvýšte i+=2 a po opakování vrať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> |
>
>Výstup
Original list: [1, 2, 3, 4, 5] Reversed list: [5, 4, 3, 2, 1]>
Časová náročnost: O(log2(n)), kde n je délka daného pole.
Pomocný prostor: O(1)
3. Seznam obrácení pomocí vestavěné funkce Reversed() a Reverse().
Použitím obrácený () můžeme seznam obrátit a a list_reverseiterator je vytvořen objekt, ze kterého můžeme pomocí přetypování typu list() vytvořit seznam. Nebo můžeme také použít seznam zvrátit() funkce pro obrácení seznamu na místě.
Python3
lst> => [> 10> ,> 11> ,> 12> ,> 13> ,> 14> ,> 15> ]> lst.reverse()> print> (> 'Using reverse() '> , lst)> print> (> 'Using reversed() '> ,> list> (> reversed> (lst)))> |
>
>Výstup
Using reverse() [15, 14, 13, 12, 11, 10] Using reversed() [10, 11, 12, 13, 14, 15]>
Časová složitost: O(n), kde n je délka seznamu lst.
Pomocný prostor: O(1), protože upravuje původní seznam na místě a nevytváří nový seznam.
4. Obrátit seznam pomocí dvoubodového přístupu
V této metodě budeme deklarovat dva ukazatele (v podstatě počáteční index a koncový index, nechť „vlevo“ a „vpravo“). Při skenování seznamu v každé iteraci zaměníme prvky na indexu „vlevo“ a „vpravo“.
„Levý“ ukazatel se posune dopředu a „pravý“ ukazatel se posune dozadu. V procesu budeme pokračovat až do ‚prvního‘ <‘posledního‘. To bude fungovat jak pro sudý počet prvků, tak i pro lichý počet prvků.
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ýstup
[7, 6, 5, 4, 3, 2, 1]>
Časová složitost : O(N)
Pomocný prostor: O(1)
5. Otočte seznam pomocí funkce insert().
Při této metodě nevracíme seznam na místě (neupravujeme původní seznam), ani nevytváříme žádnou kopii seznamu seznam . Místo toho stále vkládáme položky na 0. index seznamu, tím se seznam automaticky obrátí.
Python3
tvůrce řetězců java
# 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ýstup
[15, 14, 13, 12, 11, 10]>
Časová složitost: Na)
Pomocný prostor: O(n), kde n je délka seznamu.
6. Obrátit seznam pomocí funkce List Comprehension
V této technice není seznam seřazen na místě. Kopie původního pole není vyžadována. Používáme porozumění seznamu pro obrácení pole a vrácení seznamu.
Zjistíme délku pole a poté jej iterujeme pomocí rozsahu. Nyní, abychom nahradili poslední prvek prvním, odečteme délku původního seznamu od indexu iterátoru.
Python3
zmije plná
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ýstup
[15, 14, 13, 12, 11, 10]>
Časová složitost: O(n), kde n je délka původního_seznamu.
Pomocný prostor: Na),
7. Obrátit seznam pomocí Numpy
Zde budeme používat nudný balíček :
Inicializujte vstupní seznam my_listPřeveďte my_list na 1D numpy pole pomocí np.array(my_list)Obraťte pořadí pole pomocí my_array[::-1]Převeďte obrácené nemotorný pole zpět na seznam pomocí .tolist()
Vytiskněte obrácený 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)> |
>
>
Výstup:
[9, 8, 7, 6, 5, 4]>
Časová složitost: Na)
Pomocný prostor: Na)
Probrali jsme mnoho způsobů, jak obrátit seznam v Pythonu. Zmínili jsme také jejich časovou složitost a pomocný prostor, abyste měli správnou představu o rychlosti jejich zpracování.
Doufám, že vám tento článek pomohl pochopit způsoby jak zvrátit seznam pythonů? a v Pythonu snadno obrátíte seznam.