[Cześć i witam ponownie.
W tym filmie omawiamy funkcję mapy.
W ostatnim filmie krótko wspomnieliśmy, kiedy można
użyć filtru lub kiedy można użyć generatora wyrażeń złożonych.
Chciałem więc szybko powiedzieć, "że będziesz używać
filtru "podczas programowania z ludźmi, którzy nie "programują
w Pythonie od bardzo dawna. Na przykład programiści z innych
języków programowania lub po prostu,
gdy projekt obejmuje wiele języków
programowania.
Python jest jednym z niewielu języków
programowania, który ma taką składnię.
Jeśli więc pracujesz z wieloma językami
programowania, być może warto użyć
funkcji filtru i w ten sposób zachować spójność.
Korzystaj z funkcji
filtrowania we wszystkich używanych językach.
Ponadto użyjesz funkcji filtru,
jeśli masz już zdefiniowaną funkcję
i nie musisz jej tworzyć.
W ten sposób może to być nieco szybsze.
Wreszcie, jest też coś do powiedzenia na temat tej zmiennej,
którą tworzymy tutaj w tym zrozumieniu.
Ta zmienna jest dość bezcelowa, więc jest coś,
co można powiedzieć, aby nie tworzyć tej zmiennej tutaj.
To od ciebie zależy, którą z nich
wybierzesz, ale głównym sposobem na podjęcie decyzji
jest to, czy programujesz z innymi
ludźmi, którzy lubią funkcje filtrujące
zamiast kompleksów.
Jeśli programujesz tylko w Pythonie,
programiści używają comprehensions, a jeśli im
się to nie podoba, zachęć ich do polubienia tego, ponieważ będzie to ogólnie lepsze.
Dobra, wystarczy tego.
Porozmawiajmy o funkcji mapy.
Funkcja map jest używana do pobierania
iterowalnej i wyprowadzania nowej iterowalnej, w której
każdy element został zmodyfikowany zgodnie z pewną funkcją.
Weźmy na przykład tę mapę.
Friends_lower będzie map(lambda x: x. niżej, przyjaciół).
Ponownie, bardzo podobne do funkcji filtra.
Przyjmuje również funkcję start,
która zwraca coś i przyjmuje coś jako
barometr, a to, co przyjmuje, to każdy
z elementów tej iterowalnej tutaj.
Więc pierwszy to Rolph i zwraca
Rolph wszystkie małymi literami.
Następnie bierze Jose i zwraca wszystko
małymi literami i tak dalej.
Ale produkuje generator.
Tak więc za pierwszym razem, gdy wywołasz "next",
otrzymasz Rolph, z małymi literami.
Zróbmy to.
Jak widać, Rolph jest tam
pisany małymi literami.
Jest to bardzo identyczne z tym zrozumieniem listy tutaj.
Friend lower dla friend w friends,
i jest oczywiście identyczny,
do tego friends_lower generatora comprehension, w ten sposób.
Którego z nich powinieneś użyć?
Ten, zrozumienie generatora, chyba że potrzebujesz
ich wszystkich na liście, wtedy
możesz zrobić to zrozumienie listy.
Kiedy należy używać mapy?
Ponownie, jak powiedziałem wcześniej, gdy ludzie
w twoim zespole, ludzie,
z którymi pracujesz, są przyzwyczajeni do używania map, które są bardzo
popularne w innych językach programowania,
lub gdy pracujesz z innymi językami programowania w tym samym czasie
i chcesz zachować wszystko spójne, lub gdy uważasz, że
będzie to bardziej czytelne, ponieważ niektóre funkcje,
które zdefiniowałeś wcześniej, możesz użyć bez konieczności
tworzenia nowej funkcji lambda.
Oto przykład innego momentu,
w którym można użyć mapy zamiast filtra.
Załóżmy, że mamy klasę User:, która definiuje metodę
init i zawiera nazwę użytkownika oraz
hasło.
A potem ma classmethod, który pochodzi
z _dict.
Więc biorąc pod uwagę słownik danych,
zwróci obiekt użytkownika.
Tak więc zwróci na przykład cls danych nazwy
użytkownika i hasła danych.
Dobrze.
Teraz masz to zdefiniowane tutaj w klasie użytkownika,
a biorąc pod uwagę, że masz listę użytkowników takich jak ten,
skopiuję je z moich notatek, żeby
nie zanudzać cię wpisywaniem ich.
Masz Rolfa i tecladoisawesome,
a youaretoo to hasło.
Biorąc pod uwagę, że masz tutaj funkcję
from_dict i chcesz utworzyć listę obiektów użytkownika
z tych słowników, możesz zrobić coś
takiego.
I to jest użytkownik. from_dict(user) for, przepraszam, to powinna
być lista użytkowników, przy okazji, moje
przeprosiny, dla użytkownika w użytkownikach
i to będzie w porządku.
Uważam jednak, że mapa mogłaby być bardziej czytelna.
Jest też nieco krótszy, ale to nie ma znaczenia.
Po prostu myślę, że jest to bardziej czytelne tutaj, ponieważ wiesz,
skąd to wywołujesz. dict dla każdego
elementu w iterable.
Podczas gdy rozumienie listy, musisz
ją przeczytać i musisz utworzyć nową zmienną,
która jest używana tylko do iteracji i nic więcej,
i faktycznie wywołujesz tę funkcję tutaj,
nie wiem, po prostu czuję, że mapa w tym
przypadku jest nieco bardziej czytelna.
Pamiętaj więc, jeśli też tak uważasz,
że czasami mapa może być lepszym
wyborem niż zrozumienie listy.
A to tylko przykład.
Mam nadzieję, że dowiedziałeś
się czegoś o funkcji mapy i do zobaczenia
w następnym filmie.