• 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

Object Storage Arubacloud
0 głosów
319 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 (155,460 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 (154,860 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 Ekspert (344,860 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ź 180 wizyt
pytanie zadane 17 marca 2020 w Python przez wojtek_suchy Mądrala (6,880 p.)
0 głosów
2 odpowiedzi 213 wizyt
pytanie zadane 7 października 2020 w Python przez Dawid Popławski Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 572 wizyt
pytanie zadane 10 lutego 2018 w Python przez ayo1001 Obywatel (1,890 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...