De Lista motsvarar arrayer på andra språk, med den extra fördelen att de är dynamiska i storlek.
I Pytonorm , är listan en typ av behållare i Data Structures, som används för att lagra flera data samtidigt. Till skillnad från Uppsättningar , listor i Python är ordnade och har ett bestämt antal. I den här artikeln kommer vi att se hur man itererar över en lista i Python och även Python loop genom lista med strängar.
Python Iterera över en lista
Låt oss se alla olika sätt att iterera över en lista i Python och prestandajämförelsen mellan dem.
- Använder sig av för slinga
- Använder för loop och räckvidd()
- Använder en medan loop
- Använder sig av listförståelse
- Använder sig av räkna upp() metod
- Använda iter funktion och den nästa funktion
- Använda map() funktion
- Använder zip()-funktionen
- Använder sig av NumPy modul
Iterera över en lista med For loop
Vi kan iterera över en lista i Python genom att använda en enkel För loop .
Python3
# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # Using for loop> for> i>in> list>:> >print>(i)> |
>
>Produktion
1 3 5 7 9>
Tidskomplexitet: O(n) – där n är antalet element i listan.
Extra utrymme: O(1) – eftersom vi inte använder något extra utrymme.
Iterera genom en lista med f eller loop och range()
Om vi vill använda den traditionella for-loopen som itererar från nummer x till nummer y.
Python3
# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # getting length of list> length>=> len>(>list>)> > # Iterating the index> # same as 'for i in range(len(list))'> for> i>in> range>(length):> >print>(>list>[i])> |
>
>Produktion
1 3 5 7 9>
Tidskomplexitet: O(n), där n är längden på inmatningslistan.
Extra utrymme: O(1), som är konstant rum
Iterera genom en lista i Python med hjälp av en while loop
Vi kan också iterera över en Python-lista med hjälp av en medan loop .
Python3
# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # Getting length of list> i>=> 0> > # Iterating using while loop> while> i <>len>(>list>):> >print>(>list>[i])> >i>+>=> 1> |
>
>Produktion
1 3 5 7 9>
Tidskomplexitet: O(n) där n är längden på listan.
Extra utrymme: O(1) eftersom endast en konstant mängd extra utrymme används för variablerna i och längd.
Iterera genom en lista med hjälp av listförståelse
Vi kan använda listförståelse (möjligen det mest konkreta sättet) att iterera över en lista i Python.
Python3
# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # Using list comprehension> [>print>(i)>for> i>in> list>]> |
>
>Produktion
1 3 5 7 9>
Iterera genom en lista i Python med hjälp av enumerate()
Om vi vill konvertera listan till en itererbar lista med tupler (eller få indexet baserat på en tillståndskontroll, till exempel i linjär sökning, kan du behöva spara indexet för minimumelementet), kan du använda enumerate() funktion .
Python3
# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # Using enumerate()> for> i, val>in> enumerate>(>list>):> >print> (i,>','>,val)> |
>
sträng till array java
>Produktion
0 , 1 1 , 3 2 , 5 3 , 7 4 , 9>
Notera: Även metod 2 kan användas för att hitta indexet, men metod 1 kan inte (såvida inte en extra variabel inkrementeras varje iteration) och metod 5 ger en kortfattad representation av denna indexering.
Iterera genom en lista i Python med iter-funktionen och nästa funktion
Här är ett ytterligare tillvägagångssätt som använder iter-funktionen och nästa funktion:
Python3
# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> # Create an iterator object using the iter function> iterator>=> iter>(>list>)> # Use the next function to retrieve the elements of the iterator> try>:> >while> True>:> >element>=> next>(iterator)> >print>(element)> except> StopIteration:> >pass> |
>
>Produktion
1 3 5 7 9>
Tidskomplexitet: På)
Extra utrymme: O(1)
Iterera över en lista i Python med hjälp av map()-funktionen
Använd Karta() funktion för att tillämpa en funktion på varje element i en lista.
Python3
# Define a function to print each element> def> print_element(element):> >print>(element)> # Create a list> my_list>=> [>1>,>3>,>5>,>7>,>9>]> # Use map() to apply the print_element() function to each element of the list> result>=> map>(print_element, my_list)> # Since map() returns an iterator, we need to consume> # the iterator in order to see the output> for> _>in> result:> >pass> |
>
>Produktion
1 3 5 7 9>
Tidskomplexitet: O(n), där n är längden på listan.
Extra utrymme: O(1)
Python Iterera över flera listor med hjälp av zip()-funktionen
I det här exemplet används zip()-funktionen för att samtidigt iterera över element från två listor, list1 och list2, för att para ihop motsvarande element i tuplar för efterföljande utskrift.
Python3
list1>=> [>1>,>2>,>3>]> list2>=> [>'p'>,>'q'>,>'r'>]> # Using zip() to iterate over multiple lists simultaneously> for> i1, i2>in> zip>(list1, list2):> >print>(f>'{i1} ->{i2}'>)> |
>
>Produktion
1 ->p 2 -> q 3 -> r>
Iterera över en lista i Python med hjälp av NumPy
För mycket stora n-dimensionella listor (till exempel en bildmatris) är det ibland bättre att använda ett externt bibliotek som t.ex. numpy . Vi kan använda np. enumerate() för att efterlikna beteendet för uppräkning. Den extra kraften hos NumPy kommer från det faktum att vi till och med kan styra sättet att besöka elementen (Fortran-ordning snarare än C-ordning, säg :)), men den enda varningen är att np.nditer behandlar arrayen som skrivskyddad av standard, så man måste skicka extra flaggor som op_flags=['readwrite'] för att det ska kunna modifiera element.
Python3
import> numpy as geek> # creating an array using> # arrange method> a>=> geek.arange(>9>)> # shape array with 3 rows> # and 4 columns> a>=> a.reshape(>3>,>3>)> # iterating an array> for> x>in> geek.nditer(a):> >print>(x)> |
>
>
Produktion:
0 1 2 3 4 5 6 7 8>
Tidskomplexitet: På)
Extra utrymme: O(1)