jesteś tutaj
507
Zaawansowana iteracja
Utwórz nową,
pustą krotkę.
Spróbuj dynamicznie
dodać do niej jakieś
dane.
Nie da się dołączyć
czegokolwiek do
istniejącej krotki,
ponieważ jest ona
niemodyfikowalna.
To połączenie pętli for i komprehencji
listy wyświetla każdą wartość należącą
do listy pomnożoną przez trzy. Wiesz,
że masz tu do czynienia z komprehencją
listy, ponieważ kod ten znajduje się
w nawiasie kwadratowym.
Spójrz jednak na to. Nawias
okrągły powoduje, że wygląda to
na „komprehencję krotki”, wiesz
jednak, że taka konstrukcja jest
niemożliwa. Mimo to przedstawiona
tu pętla generuje dane, których się
spodziewasz. Dziwne, nie?
Co jest grane?
Obydwie pętle
generują te same
wyniki.
Co z „komprehencjami krotek”?
Cztery wbudowane struktury danych języka Python (krotki, listy, zbiory i słowniki) znajdują bardzo wiele różnych
zastosowań. Niemal wszystkie da się też utworzyć za pomocą komprehencji, a wyjątkiem jest tu krotka.
Dlaczego tak jest?
Okazuje się, że idea „komprehencji krotki” tak naprawdę nie ma sensu. Przypomnij sobie, że krotki
niemodyfikowalne: gdy zostaną już utworzone, nie mogą być zmieniane. Oznacza to również, że nie da się
generować wartości krotki w kodzie, co widać na przykładzie sesji środowiska IDLE pokazanej poniżej.
Nie dzieje się tu nic dziwnego ani cudownego, ponieważ właśnie takiego zachowania spodziewamy
się po krotkach: gdy już istnieją,
nie mogą zostać zmienione. Już samo to powinno wystarczyć, aby
wykluczyć zastosowanie krotek w jakiegokolwiek rodzaju komprehencjach. Przyjrzyj się jednak również
przedstawionym poniżej eksperymentom w wierszu poleceń powłoki Pythona. Druga pętla różni się od
pierwszej tylko jednym małym szczegółem: nawiasy kwadratowe otaczające komprehencję listy (widoczne
w pierwszej pętli) zostały zastąpione nawiasami okrągłymi (w przypadku drugiej pętli).

Get Python Rusz głową! Wydanie II now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.