logo

Omvända en lista i Python

Python ger oss olika sätt att vända en lista. Vi kommer att gå igenom några av de många teknikerna för hur en lista in Pytonorm kan vändas.

Exempel:



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

Omvända en lista i Python

Nedan är de tillvägagångssätt som vi kommer att täcka i den här artikeln:

  • Använda skivning Metod
  • Omvänd lista genom att byta nuvarande och sista nummer åt gången
  • Använda reversed() och omvänd() inbyggd funktion
  • Använder en två-pekare
  • Använda Föra in() fungera
  • Använder sig av listförståelse
  • Omvända en lista med Numpy

1. Omvänd Lista med hjälp av skivningsteknik

I denna teknik görs en kopia av listan och listan sorteras inte på plats. Att skapa en kopia kräver mer utrymme för att hålla alla befintliga element. Detta tar ut mer minne. Här använder vi skivning teknik för att vända vår lista i Python.

Python3




lägga till sträng i java





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

>

>

Produktion

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

Tidskomplexitet: På)
Extra utrymme: På)

2. Omvänd lista genom att byta nuvarande och sista nummer åt gången

Här är tillvägagångssättet:

Om arr[], storlek om längden på arrayen är 1, returnera arr. elif längden på arrayen är 2, byt första och sista numret och returnera arr. annars, initiera i=0. Slinga för i i storlek//2, byt sedan de första nuvarande och sista nuvarande siffrorna om de första och nästa siffrornas index inte är samma, byt sedan nästa och sista av nästa nummer och öka sedan i+=2, och efter looping returnerar 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>

>

>

Produktion

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

Tidskomplexitet: O(log2(n)), där n är längden på den givna matrisen.
Hjälputrymme: O(1)

3. Omvänd lista med den inbyggda funktionen Reversed() och Reverse().

Använder sig av reversed() vi kan vända listan och a list_reverseiterator objekt skapas, från vilket vi kan skapa en lista med hjälp av list() typ casting. Eller så kan vi också använda listan omvänd() funktion för att vända listan på plats.

Python3




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

byta namn på en katalog
>

>

Produktion

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

Tidskomplexitet: O(n), där n är längden på listan lst.
Extra utrymme: O(1) eftersom den ändrar den ursprungliga listan på plats och inte skapar en ny lista.

4. Vänd en lista med en tvåpekare

I den här metoden kommer vi att deklarera två pekare (i princip startindexet och slutindexet, låt 'vänster' och 'höger'). När vi skannar listan kommer vi i varje iteration att byta elementen vid index 'vänster' och 'höger'.

Den 'vänster' pekaren flyttas framåt och den 'höger' pekaren flyttas bakåt. Vi kommer att fortsätta processen till 'första' <'sista'. Detta kommer att fungera för både ett jämnt antal element och ett udda antal element.

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

>

>

Produktion

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

Tidskomplexitet : O(N)
Hjälputrymme: O(1)

5. Vänd en lista med insert()-funktionen

I den här metoden vänder vi varken en lista på plats (ändrar den ursprungliga listan) eller skapar någon kopia av lista . Istället fortsätter vi att infoga objekt vid det 0:e indexet på listan, detta kommer automatiskt att vända på listan.

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

>

>

Produktion

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

Tidskomplexitet: På)
Hjälputrymme: O(n), där n är längden på listan.

6. Vänd en lista med listförståelse

I denna teknik är listan inte sorterad på plats. En kopia av originalmatrisen krävs inte. Vi använder listförståelse för att vända arrayen och returnera listan.

Vi hittar längden på arrayen och itererar sedan över den med hjälp av intervallet. Nu, för att ersätta det sista elementet med det första, subtraherar vi längden på den ursprungliga listan från iteratorns index.

Python3


java parseint



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

>

>

Produktion

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

Tidskomplexitet: O(n), där n är längden på original_listan.
Extra utrymme: På),

7. Vänd en lista med Numpy

Här ska vi använda numpy paket :

Initiera inmatningslistan my_listKonvertera my_list till en 1D numpy array med np.array(my_list) Vänd om ordningen på arrayen med my_array[::-1]Konvertera den omvända numpy array tillbaka till en lista med .tolist()

Skriv ut den omvända listan

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

>

>

Produktion:

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

Tidskomplexitet: På)
Extra utrymme: På)

Vi har diskuterat många sätt att vända en lista i Python. Vi har också nämnt deras tidskomplexitet och extra utrymme för att ge dig rätt uppfattning om deras bearbetningshastighet.

Hoppas den här artikeln hjälpte dig att förstå hur du går hur vänder man en pythonlista? och du kommer enkelt att vända en lista i Python.