• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dziwne zachowywanie się pętli for

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
352 wizyt
pytanie zadane 11 grudnia 2019 w Python przez Darven Użytkownik (860 p.)
zmienione kategorie 12 grudnia 2019 przez adrian17

Może ktoś mi wytłumaczyć zachowanie pętli for w pythonie?? Dlaczego mając liste z jednym elementem, pętla wyspuje błąd index out of range? poprawne wykonywanie pętli działa od dwóch elementów wzwyż, tak jakby pętla for wymuszała na liście co najmniej dwa elementy

Natomiast jeśli wartość ostatniego elementu jest większa niż ilość elementów w tablicy, to również krzyczy, że wyszło poza liste...Jak?? Możesz np. mieć 10 elementów w tablicy, peirwsze 9 ma powiedzmy, wartość zero, ale jeśli ostatni element będzie miał wartość 10 to wywala ten sam błąd. Nie rozumiem tego.

 

lista = [0,2] # przy [0,0] działa, ale np. przy [0,2] już nie. 

for i in lista:
    print(lista[i])

# list index out of range !

 

Może powiem jak ja to rozumiem. "i" w pętli powinno przyjmować wartość elementu listy na którym się znajduje. A więc będąc na drugim elemencie "i" powinna przyjąć wartość 2, a tymczasem program zachowuje się, jakby wartość "i" wymuszała wykonywanie dodatkowych ruchów pętli. 

3 odpowiedzi

+1 głos
odpowiedź 11 grudnia 2019 przez mokrowski Mędrzec (156,260 p.)
wybrane 12 grudnia 2019 przez Darven
 
Najlepsza

W języku Python, for pracuje z użyciem danych z kontenerów.

lista_wartosci = [1, 20, 40, 77, 3, 33]
for wartosc in lista_wartosci:
    print(wartosc)

Przy każdym obiegu pętli, pod zmienną wartosc, znajduje się już kolejna wartość z listy.

+1 głos
odpowiedź 11 grudnia 2019 przez tangarr Mędrzec (155,140 p.)

1. Umieściłeś pytanie w sekcji C/C++, proszę popraw to.

2. For w pythonie nie iteruje po indeksach tylko po elementach tablicy.

lista = [0,2]

for i in lista:
    print(i)

 

komentarz 12 grudnia 2019 przez adrian17 Mentor (350,120 p.)
(poprawiłem kategorię)
0 głosów
odpowiedź 4 stycznia 2020 przez Nieprofesjonalny Użytkownik (890 p.)

Tak jak inni wyżej napisali w ten sposób iterujesz po elementach listy w Pythonie. Jeśli natomiast chcesz użyć indeksów, twój program powinien wyglądać tak:

for i in range(len(lista)):
    print(lista[i])

Funkcja len() zwraca długość listy (liczbę elementów) natomiast jednoargumentowy wariant funkcji range() zwraca ciąg liczb od 0 do argumentu -1.

Podobne pytania

+1 głos
1 odpowiedź 200 wizyt
pytanie zadane 17 marca 2020 w Python przez wojtek_suchy Mądrala (6,880 p.)
0 głosów
2 odpowiedzi 276 wizyt
pytanie zadane 7 października 2020 w Python przez Dawid Popławski Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 865 wizyt
pytanie zadane 10 lutego 2018 w Python przez ayo1001 Obywatel (1,890 p.)

93,115 zapytań

142,097 odpowiedzi

321,672 komentarzy

62,453 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...