Python_Programowanie_funkcyjne_pythpf.pdf

(2143 KB) Pobierz
Tytuł oryginału: Functional Python Programming, Second Edition
Tłumaczenie: Radosław Meryk
ISBN: 978-83-283-5069-4
Copyright © Packt Publishing 2018. First published in the English language under the title ‘Functional
Python Programming - Second Edition – (9781788627061)’
Polish edition copyright © 2019 by Helion SA
All rights reserved.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne
i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym
ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Helion SA nie ponoszą również
żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Helion SA
ul. Kościuszki 1c, 44-100 Gliwice
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Pliki z przykładami omawianymi w książce można znaleźć pod adresem:
ftp://ftp.helion.pl/przyklady/pythpf.zip
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/pythpf
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis tre ci
O autorze
O recenzencie
Przedmowa
Rozdzia 1. Zrozumie programowanie funkcyjne
Paradygmat programowania
Podzia paradygmatu proceduralnego
Korzystanie z paradygmatu funkcyjnego
Korzystanie z funkcyjnych hybryd
Tworzenie obiektu
Stos ó wi
Klasyczny przyk ad programowania funkcyjnego
Eksploracyjna analiza danych
Podsumowanie
9
10
9
17
18
19
20
22
23
24
25
28
29
Rozdzia 2. Podstawowe poj cia programowania funkcyjnego
Funkcje pierwszej klasy
Czyste funkcje
Funkcje wy szego rz du
Dane niemutowalne
Warto ciowanie cis e i nie cis e
Rekurencja zamiast jawnego stanu p tli
Funkcyjne systemy typów
Znajome terytorium
Poj cia zaawansowane
Podsumowanie
31
32
32
33
34
36
37
41
41
42
43
Kup książkę
Poleć książkę
Spis tre ci
Rozdzia 3. Funkcje, iteratory i generatory
Pisanie czystych funkcji
Funkcje jako obiekty pierwszej klasy
Korzystanie z a cuchów znaków
U ywanie krotek i krotek nazwanych
Korzystanie z wyra e generatorowych
Odkrywanie ogranicze generatorów
czenie wyra e generatorowych
Czyszczenie surowych danych za pomoc funkcji generatorowych
Korzystanie z list, s owników i zbiorów
Korzystanie z mapowa stanowych
Wykorzystanie modu u bisect do tworzenia mapowania
U ywanie stanowych zbiorów
Podsumowanie
45
46
48
49
50
52
54
56
56
58
61
63
64
65
Rozdzia 4. Praca z kolekcjami
Przegl d rodzajów funkcji
Praca z obiektami iterowalnymi
Parsowanie pliku XML
Parsowanie pliku na wy szym poziomie
Tworzenie par elementów z sekwencji
Jawne u ycie funkcji iter()
Rozszerzanie prostej p tli
Stosowanie wyra e generatorowych do funkcji skalarnych
Wykorzystanie funkcji any() i all() jako redukcji
U ywanie funkcji len() i sum()
U ywanie sum i zlicze w obliczeniach statystycznych
Korzystanie z funkcji zip() do tworzenia struktury i sp aszczania sekwencji
Rozpakowywanie spakowanej sekwencji
Sp aszczanie sekwencji
Nadawanie struktury p askim sekwencjom
Tworzenie struktury p askich sekwencji — podej cie alternatywne
Wykorzystanie funkcji reverse() do zmiany kolejno ci elementów
Wykorzystanie funkcji enumerate() w celu uwzgl dnienia numeru porz dkowego
Podsumowanie
67
68
68
69
71
73
76
77
80
81
83
84
87
88
89
90
92
93
94
94
Rozdzia 5. Funkcje wy szego rz du
Wykorzystanie funkcji max() i min() do wyszukiwania ekstremów
Korzystanie z formatu wyra e lambda w Pythonie
Wyra enia lambda i rachunek lambda
Korzystanie z funkcji map() w celu zastosowania funkcji do kolekcji
Wykorzystanie wyra e lambda i funkcji map()
U ycie funkcji map() w odniesieniu do wielu sekwencji
Wykorzystanie funkcji filter() do przekazywania lub odrzucania danych
U ycie funkcji filter() do identyfikacji warto ci odstaj cych
Funkcja iter() z warto ci „stra nika”
Wykorzystanie funkcji sorted() do porz dkowania danych
Pisanie funkcji wy szego rz du
97
98
101
103
103
104
105
107
108
109
110
111
4
Kup książkę
Poleć książkę
Spis tre ci
Pisanie mapowa i filtrów wy szego rz du
Rozpakowywanie danych podczas mapowania
Opakowywanie dodatkowych danych podczas mapowania
Sp aszczanie danych podczas mapowania
Strukturyzacja danych podczas filtrowania
Pisanie funkcji generatorowych
Budowanie funkcji wy szego rz du z wykorzystaniem obiektów wywo ywalnych
Zapewnienie dobrego projektu funkcyjnego
Przegl d wybranych wzorców projektowych
Podsumowanie
112
113
115
116
118
119
121
123
124
125
Rozdzia 6. Rekurencje i redukcje
Proste rekurencje numeryczne
Implementacja optymalizacji ogonowej
Pozostawienie rekurencji bez zmian
Obs uga trudnego przypadku optymalizacji ogonowej
Przetwarzanie kolekcji za pomoc rekurencji
Optymalizacja ogonowa dla kolekcji
Redukcje i sk adanie kolekcji z wielu elementów w jeden element
Redukcja grupowania — z wielu elementów do mniejszej liczby
Budowanie mapowania za pomoc metody Counter
Budowanie mapowania przez sortowanie
Grupowanie lub podzia danych wed ug warto ci klucza
Pisanie bardziej ogólnych redukcji grupuj cych
Pisanie redukcji wy szego rz du
Pisanie parserów plików
Podsumowanie
127
128
129
130
131
132
133
134
136
136
137
139
142
143
144
150
Rozdzia 7. Dodatkowe techniki przetwarzania krotek
U ywanie krotek do zbierania danych
U ywanie krotek nazwanych do zbierania danych
Budowanie nazwanych krotek za pomoc konstruktorów funkcyjnych
Unikanie stanowych klas dzi ki wykorzystaniu rodzin krotek
Przypisywanie rang statystycznych
Opakowanie zamiast zmiany stanu
Wielokrotne opakowanie zamiast zmian stanu
Obliczanie korelacji rangowej Spearmana
Polimorfizm i dopasowywanie typów z wzorcami
Podsumowanie
153
154
156
159
160
163
165
166
167
169
174
Rozdzia 8. Modu itertools
Praca z iteratorami niesko czonymi
Liczenie za pomoc count()
Zliczanie z wykorzystaniem argumentów zmiennoprzecinkowych
Wielokrotne iterowanie cyklu za pomoc funkcji cycle()
Powtarzanie pojedynczej warto ci za pomoc funkcji repeat()
175
176
176
177
179
181
5
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin