Python suteikia mums įvairių būdų, kaip pakeisti sąrašą. Išnagrinėsime kai kuriuos iš daugelio metodų, kaip sudaryti sąrašą Python galima apversti.
Pavyzdys:
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.>
Sąrašo apvertimas Python
Toliau pateikiami metodai, kuriuos aptarsime šiame straipsnyje:
- Naudojant pjaustymas technika
- Sąrašo keitimas atvirkštine tvarka keičiant esamus ir paskutinius numerius vienu metu
- Naudojant atvirkštinį () ir atvirkščiai () įmontuota funkcija
- Naudojant a dvitaškis metodas
- Naudojant Įdėti() funkcija
- Naudojant sąrašo supratimas
- Sąrašo apvertimas naudojant Numigęs
1. Atvirkščiai Sąrašas naudojant pjaustymo techniką
Taikant šią techniką, daroma sąrašo kopija, o sąrašas nėra rūšiuojamas į vietą. Kuriant kopiją reikia daugiau vietos visiems esamiems elementams laikyti. Tai išeikvoja daugiau atminties. Čia mes naudojame pjaustymas techniką, kad pakeistume mūsų sąrašą 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))> |
>
nedeterministiniai baigtiniai automatai
>Išvestis
[15, 14, 13, 12, 11, 10]>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
2. Atvirkštinis sąrašas keičiant esamus ir paskutinius numerius vienu metu
Štai toks požiūris:
Jei arr [], dydis, jei masyvo ilgis yra 1, tada grąžinkite arr. elif masyvo ilgis yra 2, sukeiskite pirmą ir paskutinį skaičių ir grąžinkite arr. kitu atveju inicijuokite i=0. Sujunkite i dydį//2, tada sukeiskite pirmuosius esamus ir paskutinius esamus skaičius, jei pirmojo ir kito skaičiaus indeksai nesutampa, tada sukeiskite kitą ir paskutinį iš sekančių skaičių, tada padidinkite i+=2, o po kilpos grąžinkite 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> |
>
>Išvestis
Original list: [1, 2, 3, 4, 5] Reversed list: [5, 4, 3, 2, 1]>
Laiko sudėtingumas: O(log2(n)), kur n yra nurodyto masyvo ilgis.
Pagalbinė erdvė: O(1)
3. Atvirkštinis sąrašas, naudojant integruotas funkcijas Reversed() ir Reverse().
Naudojant atvirkščiai () galime apversti sąrašą ir a list_reverseiterator sukuriamas objektas, iš kurio galime sukurti sąrašą naudodami list() tipo liejimą. Arba taip pat galime naudoti sąrašą atvirkščiai () funkcija apversti sąrašą vietoje.
Python3
Java rūšiavimas masyvo sąraše
lst> => [> 10> ,> 11> ,> 12> ,> 13> ,> 14> ,> 15> ]> lst.reverse()> print> (> 'Using reverse() '> , lst)> print> (> 'Using reversed() '> ,> list> (> reversed> (lst)))> |
>
>Išvestis
Using reverse() [15, 14, 13, 12, 11, 10] Using reversed() [10, 11, 12, 13, 14, 15]>
Laiko sudėtingumas: O(n), kur n yra sąrašo lst ilgis.
Pagalbinė erdvė: O(1), nes jis pakeičia pradinį sąrašą ir nesukuria naujo sąrašo.
4. Apverskite sąrašą naudodami dviejų taškų metodą
Taikant šį metodą, mes paskelbsime dvi rodykles (iš esmės pradžios indeksą ir pabaigos indeksą, tegul „kairė“ ir „dešinė“). Nuskaitydami sąrašą, kiekvienoje iteracijoje sukeisime elementus rodyklėje „kairėje“ ir „dešinėje“.
„Kairysis“ rodyklė judės į priekį, o „dešinė“ – atgal. Tęsime procesą iki „pirmas“ <„paskutinis“. Tai veiks ir lyginiam elementų skaičiui, ir nelyginiam elementų skaičiui.
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))> |
>
>Išvestis
[7, 6, 5, 4, 3, 2, 1]>
Laiko sudėtingumas : O (N)
Pagalbinė erdvė: O(1)
5. Apverskite sąrašą naudodami įterpimo () funkciją
Taikydami šį metodą, nekeičiame sąrašo vietoje (nekeičiame pradinio sąrašo) ir nesukuriame jokios jo kopijos sąrašą . Vietoj to, mes nuolat įterpiame elementus į 0-ą sąrašo indeksą, tai automatiškai pakeis sąrašą.
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)> |
>
>Išvestis
[15, 14, 13, 12, 11, 10]>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n), kur n yra sąrašo ilgis.
6. Apverskite sąrašą naudodami sąrašo supratimą
Taikant šią techniką, sąrašas nėra rūšiuojamas į vietą. Pradinio masyvo kopija nebūtina. Mes naudojame sąrašo supratimas norėdami apversti masyvą ir grąžinti sąrašą.
Mes nustatome masyvo ilgį ir kartojame jį naudodami diapazoną. Dabar, norėdami pakeisti paskutinį elementą pirmuoju, iš iteratoriaus indekso atimame pradinio sąrašo ilgį.
Python3
rūšiuoti krūvą
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)> |
>
>Išvestis
[15, 14, 13, 12, 11, 10]>
Laiko sudėtingumas: O(n), kur n yra originalaus sąrašo ilgis.
Pagalbinė erdvė: O(n),
7. Apverskite sąrašą naudodami Numpy
Čia mes ketiname naudoti niūrus paketas :
Inicijuoti įvesties sąrašą my_listKonvertuoti mano_sąrašą į 1D numpy masyvą naudojant np.array(my_list)Pakeiskite masyvo tvarką naudodami my_array[::-1]Konvertuokite atvirkštinį nelygus masyvas atgal į sąrašą naudojant .tolist()
Spausdinkite atvirkštinį sąrašą
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)> |
>
>
Išvestis:
[9, 8, 7, 6, 5, 4]>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
Mes aptarėme daugybę būdų, kaip pakeisti sąrašą Python. Taip pat paminėjome jų laiko sudėtingumą ir pagalbinę erdvę, kad gautume teisingą supratimą apie jų apdorojimo greitį.
Tikimės, kad šis straipsnis padėjo jums suprasti būdus kaip pakeisti python sąrašą? ir jūs lengvai pakeisite sąrašą Python.