7.1 Mnożenie
W Pythonie jest wygodna składnia, która pozwala zwiększać ilość elementów. Do tego używamy prostego operatora mnożenia.
Generowanie stringów
Można go zastosować do stringów:
print("Mama" * 5) # wyświetli MamaMamaMamaMamaMama
Albo można, na przykład, szybko wyświetlić linię oddzielającą:
print("-" * 40) # wyświetli ----------------------------------------
Generowanie list
Można też mnożyć ilość elementów na liście:
print(["apple"] * 5) # wyświetli ['apple', 'apple', 'apple', 'apple', 'apple']
Ten operator ma też bardziej praktyczne zastosowanie. Na przykład, chcesz stworzyć listę z 10 elementów, wypełnioną zerami:
alist = [0] * 10
print(alist) # wyświetli [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Można nawet zrobić dwuwymiarową tablicę. Na przykład, chcesz stworzyć tablicę 20x10, wypełnioną zerami. To równie proste:
alist = [[0] * 10] * 20
print(alist) # wyświetli [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ...]
Bardzo wygodne, prawda?
7.2 List Comprehension
W Pythonie mamy taki przydatny narzędzie, jak „List Comprehension” — to wygodny i kompaktowy sposób tworzenia list. To narzędzie składniowe pozwala generować nowe listy, stosując wyrażenie do każdego elementu iterowalnego obiektu w jednej krótkiej linii kodu.
Łatwiej pokazać niż opisywać. To narzędzie składniowe wygląda tak:
[wyrażenie for zmienna in sekwencja]
Gdzie:
-
zmienna
— identyfikator jakiejś zmiennej, -
sekwencja
— sekwencja wartości, które przyjmuje dana zmienna (to może być lista, string lub obiekt uzyskany za pomocą funkcjirange
), -
wyrażenie
— jakieś wyrażenie, zwykle zależne od użytej w generatorze zmiennej, którym będą wypełnione elementy listy.
Ważne!
Całe wyrażenie powinno być ujęte w nawiasy kwadratowe.
Oto kilka przykładów użycia generatorów:
Stworzyć listę składającą się z n zer, można i przy użyciu generatora:
alist = [0 for i in range(100)]
Stworzyć listę wypełnioną kwadratami liczb całkowitych, można tak:
n = 5
alist = [i ** 2 for i in range(n)]
Stworzyć listę wypełnioną liczbami całkowitymi od 1 do n:
n = 10
alist = [i + 1 for i in range(n)]
A oto sposób na uzyskanie listy wypełnionej losowymi liczbami od 1 do 9 (używając funkcji randrange()
z modułu random):
from random import randrange
n = 10
alist = [randrange(1, 10) for i in range(n)]
7.3 Pętla w List Comprehension
List Comprehension można użyć nie tylko do generowania list. W zasadzie, to po prostu kompaktowy sposób zapisu pętli for.
Na przykład, z jego pomocą można po prostu wyświetlić pewne wartości z listy na ekran:
alist = ["apple", "banana", "cherry"]
[print(x) for x in alist]
Albo nawet można wprowadzić wartości z klawiatury:
a = [input() for i in range(int(input()))]
W tym przykładzie lista będzie się składała z stringów, wczytanych ze standardowego wejścia: najpierw trzeba wprowadzić liczbę elementów listy (ta wartość zostanie użyta jako argument funkcji range
), a potem — określoną liczbę stringów.
W bardziej klasycznym stylu ten kod wyglądałby tak:
n = int(input())
a = []
for i in range(n):
x = input()
a.append(x)
Ogólnie rzecz biorąc, możliwości List Comprehension są całkiem duże:
Można używać warunków:
Włączenie warunków do wyrażenia pozwala filtrować elementy, na przykład, można stworzyć listę tylko z parzystych liczb:
[x for x in range(10) if x % 2 == 0]
Zagnieżdżone pętle:
Generator pozwala używać zagnieżdżonych pętli, na przykład, do tworzenia wielowymiarowych tablic:
[(x, y) for x in range(3) for y in range(3)]
GO TO FULL VERSION