• 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

VPS Starter Arubacloud
0 głosów
343 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 Ekspert (349,960 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ź 193 wizyt
pytanie zadane 17 marca 2020 w Python przez wojtek_suchy Mądrala (6,880 p.)
0 głosów
2 odpowiedzi 250 wizyt
pytanie zadane 7 października 2020 w Python przez Dawid Popławski Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 833 wizyt
pytanie zadane 10 lutego 2018 w Python przez ayo1001 Obywatel (1,890 p.)

93,028 zapytań

141,991 odpowiedzi

321,294 komentarzy

62,375 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 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...