| title | count CodeLab | count 19s | subTot 19s | CodeLab exercise |
odeLab title |
||
| Introducing Python book | |||||||
| Table of Contents | |||||||
| Page numbers might be a little off | |||||||
| Begin Unit A CodeLab | |||||||
| Preface xv | |||||||
| 1. A Taste of Py 1 | |||||||
| Python in the Real World 5 | |||||||
| Python versus Language X 6 | |||||||
| So, Why Python? 9 | |||||||
| When Not to Use Python 9 | |||||||
| Python 2 versus Python 3 10 | |||||||
| Installing Python 10 | |||||||
| Running Python 11 | |||||||
| Using the Interactive Interpreter 11 | |||||||
| Use Python Files 12 | |||||||
| What’s Next? 13 | |||||||
| Your Moment of Zen 13 | |||||||
| Things to Do 14 | |||||||
| 2. Py Ingredients: Numbers, Strings, | |||||||
| and Variables 152. Py Ingredients: Numbers, Strings, | |||||||
| and Variables 15 | |||||||
| Variables, Names, and Objects 15 | 5 | 5 | 5 | 51001 51014 51019 51013 51043 | Assignment of variables | ||
| Numbers 19 | 14 | 3 | 8 | 51872 51029 51030 51031 51085 51032 51033 51034 51044 51045 51046 51048 51047 59249 | Arithmetic expressions | ||
| Integers 19 | |||||||
| Precedence 23 | |||||||
| Bases 24 | |||||||
| Type Conversions 25 | 8 | 8 | 16 | 51750 51751 51752 51753 51026 51024 51843 51842 | Conversions (some of these are near this section in the book) | ||
| How Big Is an int? 26 | |||||||
| Floats 27 | |||||||
| Math Functions 27 | |||||||
| Strings 27 | |||||||
| Create with Quotes 28 | |||||||
| Convert Data Types by Using str() 30 | |||||||
| Escape with \ 30 | |||||||
| Combine with + 31 | 2 | 2 | 18 | 51611 51612 | list slicing/splicing/concatenation (first two) | ||
| Duplicate with * 32 | |||||||
| Extract a Character with [] 32 | 11 | 3 | 21 | 51840 51841 51836 51847 51846 51763 51760 51761 51762 51855 51868 | Strings | ||
| Begin Unit B CodeLab | |||||||
| Slice with [start: end: step] 33 | 11 | 7 | 28 | 51764 51765 51771 51772 51850 51851 51852 81853 51844 51848 51854 | Slicing | ||
| Slice with [start: end: step] 33 | 7 | 4 | 32 | 51613 51614 51615 51616 51617 51618 51619 | list slicing/splicing/concatenation (second group) | ||
| Get Length with len() 35 | 2 | 2 | 34 | 51211 51602 | list-methods (part here) | ||
| Split with split() 35 | 5 | 3 | 37 | 51078 51079 51080 51081 51082 | |||
| Combine with join() 36 | |||||||
| Playing with Strings 36 | 3 | 3 | 40 | 51849 51889 51890 | finding | ||
| Begin Unit C CodeLab | |||||||
| Case and Alignment 37 | |||||||
| Substitute with replace() 38 | |||||||
| More String Things 39 | |||||||
| Things to Do 39 | |||||||
| 3. Py Filling: Lists, Tuples, | |||||||
| Dictionaries, and Sets 41 | |||||||
| Lists and Tuples 41 | |||||||
| Lists 42 | |||||||
| Create with [] or list() 42 | 5 | 4 | 44 | 51600 51601 51192 51193 51194 | List initialization | ||
| Convert Other Data Types to Lists with list() 43 | |||||||
| Get an Item by Using [offset] 43 | 14 | 2 | 46 | 51203 51201 51195 51196 51197 51199 51200 51202 51204 51205 51206 51207 51208 51209 | list indexing (move 51280 later with loops) | ||
| Lists of Lists 44 | |||||||
| Change an Item by [offset] 45 | |||||||
| Get a Slice to Extract Items by Offset Range 45 | |||||||
| Add an Item to the End with append() 46 | 10 | 2 | 48 | 51603 51275 51276 51277 51278 51284 51285 51287 51288 51289 | list-addition/retrieval/deletion | ||
| Combine Lists by Using extend() or += 46 | |||||||
| Add an Item by Offset with insert() 46 | |||||||
| Delete an Item by Offset with del 47 | 3 | 2 | 50 | 51609 51607 51608 | list-addition/retrieval/deletion | ||
| Delete an Item by Value with remove() 47 | |||||||
| Get an Item by Offset and Delete It by Using pop() 47 | 2 | 2 | 52 | 51605 51606 | list-methods(part here) | ||
| Find an Item’s Offset by Value with index() 48 | |||||||
| Test for a Value with in 48 | 3 | 3 | 55 | 51620 51621 51213 | list membership | ||
| Count Occurrences of a Value by Using count() 49 | |||||||
| Convert to a String with join() 49 | |||||||
| Reorder Items with sort() 49 | 6 | 4 | 59 | 51212 51610 51256 51294 51295 51296 | list-methods(part here) | ||
| Reorder Items with sort() 49 | 1 | 1 | 60 | 51283 | functions and lists | ||
| Begin Unit D CodeLab | |||||||
| Get Length by Using len() 50 | |||||||
| Assign with =, Copy with copy() 50 | |||||||
| Tuples 52 | |||||||
| Create a Tuple by Using () 52 | 5 | 3 | 63 | 31700 51701 51706 51707 51708 | |||
| Tuples versus Lists 53 | |||||||
| Dictionaries 53 | |||||||
| Create with {} 54 | 2 | 2 | 65 | 51815 51816 | |||
| Convert by Using dict() 54 | |||||||
| Add or Change an Item by [ key] 55Add or Change an Item by [ key] 55 | 5 | 3 | 68 | 51818 51820 51821 51822 51823 | |||
| Combine Dictionaries with update() 56 | |||||||
| Delete an Item by Key with del 57 | 3 | 3 | 71 | 51819 51824 51825 | |||
| Delete All Items by Using clear() 57 | |||||||
| Test for a Key by Using in 58 | |||||||
| Get an Item by [key] 58 | 1 | 1 | 72 | 51817 | |||
| Get All Keys by Using keys() 59 | |||||||
| Get All Values by Using values() 59 | |||||||
| Get All Key-Value Pairs by Using items() 59 | |||||||
| Assign with =, Copy with copy() 59 | |||||||
| Sets 60 | |||||||
| Create with set() 61 | 4 | 2 | 74 | 51800 51802 51803 51804 | |||
| Create with set() 61 | 6 | 3 | 77 | 51805 51806 51807 51809 51810 51811 | |||
| Convert from Other Data Types with set() 61 | 1 | 1 | 78 | 51248 | |||
| Test for Value by Using in 62 | 1 | 1 | 79 | 51808 | |||
| Begin Unit E CodeLab | |||||||
| Combinations and Operators 63 | |||||||
| Compare Data Structures 66 | |||||||
| Make Bigger Data Structures 66 | |||||||
| Things to Do 67 | |||||||
| 4. Py Crust: Code Structures 69 | |||||||
| Comment with # 69 | |||||||
| Continue Lines with \ 70 | |||||||
| Compare with if, elif, and else 71 | 14 | 2 | 81 | 51109 51112 51113 51173 51061 51062 51063 51165 51166 51167 51110 51111 51065 51064 | Logical Operators | ||
| Compare with if, elif, and else 71 | 8 | 2 | 83 | 51114 51115 51116 51117 51102 51217 51160 51896 | if | ||
| Compare with if, elif, and else 71 | 4 | 2 | 85 | 51891 51892 51893 51897 | boolean values and variables | ||
| Compare with if, elif, and else 71 | 5 | 2 | 87 | 51118 51119 51120 51121 51122 | if-else | ||
| Compare with if, elif, and else 71 | 3 | 3 | 90 | 51900 51898 51899 | cascaded and nested if | ||
| Compare with if, elif, and else 71 | 10 | 2 | 92 | 51915 51912 51913 51914 51910 51911 51901 51902 51903 51905 | range-testing | ||
| What Is True? 74 | |||||||
| Repeat with while 75 | 6 | 2 | 94 | 51180 51181 51187 51251 51252 51253 | while loops | ||
| Repeat with while 75 | 9 | 3 | 97 | 51935 51936 51937 51938 51939 51940 51941 51942 51943 | input testing loops | ||
| Repeat with while 75 | 1 | 1 | 98 | 51007 | loops and tuples | ||
| Begin Unit F CodeLab | |||||||
| Repeat with while 75 | 2 | 2 | 100 | 51214 51215 | list-traversal (part) | ||
| Repeat with while 75 | 2 | 2 | 102 | 51291 51292 | loops and lists (part) | ||
| Repeat with while 75 | 1 | 1 | 103 | 51012 | loops and lists (combos) | ||
| Cancel with break 75 | |||||||
| Skip Ahead with continue 76 | |||||||
| Check break Use with else 76 | |||||||
| Iterate with for 77 | 13 | 13 | 116 | 51176 51177 51259 51250 51286 51268 51269 51929 51930 51931 51932 51933 51934 | for and range | ||
| Iterate with for 77 | 2 | 2 | 118 | 51946 51945 | nested loops | ||
| Begin Unit G CodeLab | |||||||
| Iterate with for 77 | 11 | 11 | 129 | 51270 51271 51272 51273 51274 51279 51006 51002 51003 51004 51005 | loops and strings | ||
| Iterate with for 77 | 4 | 4 | 133 | 51210 51216 51219 51263 | list-traversal (part) | ||
| Iterate with for 77 | 1 | 1 | 134 | 51280 | list indexing (move 51280 later with loops) | ||
| Iterate with for 77 | 4 | 4 | 138 | 51262 51264 51266 51267 | |||
| Iterate with for 77 | 3 | 3 | 141 | 51290 51293 51297 | loops and lists | ||
| Begin Unit H CodeLab | |||||||
| Iterate with for 77 | 3 | 3 | 144 | 51298 51301 51305 | set iteration | ||
| Iterate with for 77 | 1 | 1 | 145 | 51302 | dictionary adding/removal | ||
| Iterate with for 77 | 12 | 12 | 157 | 51828 51829 51830 51831 51826 51300 51265 51281 51299 51827 51282 51832 | dictionary traversal | ||
| Iterate with for 77 | 2 | 2 | 159 | 51303 51304 | |||
| Begin Unit I CodeLab | |||||||
| Cancel with break 78 | |||||||
| input function small mention 79 | |||||||
| Skip with continue 78 | |||||||
| Check break Use with else 78 | |||||||
| Iterate Multiple Sequences with zip() 79 | |||||||
| Generate Number Sequences with range() 80 | 2 | 2 | 161 | 51257 51258 | list-creation from range | ||
| Other Iterators 81 | |||||||
| Comprehensions 81 | |||||||
| List Comprehensions 81 | |||||||
| Dictionary Comprehensions 83 | 2 | 2 | 163 | 51260 51261 | |||
| Set Comprehensions 84 | |||||||
| Generator Comprehensions 84 | |||||||
| Functions 85 | 11 | 9 | 172 | 51074 51156 51073 51075 51076 51077 51143 51144 51146 51145 51147 | Invoking functions | ||
| Functions 85 | 2 | 2 | 174 | 51148 51149 | composition | ||
| Functions 85 | 2 | 2 | 176 | 51155 51016 | function definition | ||
| Functions 85 | 3 | 3 | 179 | 51105 51158 51218 | functions and if statements | ||
| Begin Unit J CodeLab | |||||||
| Functions 85 | 4 | 4 | 183 | 51162 51008 51009 51011 | function and loops | ||
| Positional Arguments 89 | |||||||
| Keyword Arguments 89 | |||||||
| Specify Default Parameter Values 90 | |||||||
| Gather Positional Arguments with * 91 | |||||||
| Gather Keyword Arguments with ** 92 | |||||||
| Docstrings 92 | |||||||
| Functions Are First-Class Citizens 93 | |||||||
| Inner Functions 95 | |||||||
| Closures 95 | |||||||
| Anonymous Functions: the lambda() Function 96 | |||||||
| Generators 98 | |||||||
| Decorators 99 | |||||||
| Namespaces and Scope 101 | |||||||
| Uses of _ and __ in Names 103 | |||||||
| Handle Errors with try and except 103 | |||||||
| Make Your Own Exceptions 105 | |||||||
| Things to Do 106 | |||||||
| 5. Py Boxes: Modules, Packages, | |||||||
| and Programs 109 | |||||||
| Standalone Programs 109 | |||||||
| Command-Line Arguments 110 | |||||||
| Modules and the import Statement 110 | |||||||
| Import a Module 110 | |||||||
| Import a Module with Another Name 112 | |||||||
| Import Only What You Want from a Module 112 | |||||||
| Module Search Path 113 | |||||||
| Packages 113 | |||||||
| The Python Standard Library 114 | |||||||
| Handle Missing Keys with setdefault() and defaultdict() 114 | |||||||
| Count Items with Counter() 116 | |||||||
| Order by Key with OrderedDict() 118 | |||||||
| Stack + Queue == deque 118 | |||||||
| Iterate over Code Structures with itertools 119 | |||||||
| Print Nicely with pprint() 120 | |||||||
| More Batteries: Get Other Python Code 121 | |||||||
| Things to Do 121 | |||||||
| 6. Oh Oh: Objects and Classes 123 | |||||||
| What Are Objects? 123 | |||||||
| Define a Class with class 124 | 6 | 5 | 188 | 51225 51226 51227 51244 51245 51227 | |||
| Inheritance 126 | |||||||
| Override a Method 127 | |||||||
| Add a Method 128 | |||||||
| Get Help from Your Parent with super 129 | |||||||
| In self Defense 130 | |||||||
| Get and Set Attribute Values with Properties 131 | |||||||
| Name Mangling for Privacy 133 | |||||||
| Method Types 134 | |||||||
| Duck Typing 135 | |||||||
| Special Methods 137 | |||||||
| Composition 140 | |||||||
| When to Use Classes and Objects versus Modules 141 | |||||||
| Named Tuples 141 | |||||||
| Things to Do 143 | |||||||
| 7. Mangle Data Like a Pro 145 | |||||||
| Text Strings 145 | |||||||
| Unicode 145 | |||||||
| Format 152 | |||||||
| Match with Regular Expressions 156 | |||||||
| Binary Data 163 | |||||||
| bytes and bytearray 164 | |||||||
| Convert Binary Data with struct 165 | |||||||
| Other Binary Data Tools 168 | |||||||
| Convert Bytes/Strings with binascii() 169 | |||||||
| Bit Operators 169 | |||||||
| Things to Do 170 | |||||||
| 8. Data Has to Go Somewhere 173 | |||||||
| File Input/Output 173 | |||||||
| Write a Text File with write() 174 | |||||||
| Read a Text File with read(), readline(), or readlines() 176 | |||||||
| Write a Binary File with write() 177 | |||||||
| Read a Binary File with read() 178 | |||||||
| Close Files Automatically by Using with 178 | |||||||
| Change Position with seek() 179 | |||||||
| Structured Text Files 181 | |||||||
| CSV 181 | |||||||
| XML 183 | |||||||
| HTML 185 | |||||||
| JSON 185 | |||||||
| YAML 188 | |||||||
| A Security Note 189 | |||||||
| Configuration Files 190 | |||||||
| Other Interchange Formats 191 | |||||||
| Serialize by Using pickle 191 | |||||||
| Structured Binary Files 192 | |||||||
| Spreadsheets 192 | |||||||
| HDF5 192 | |||||||
| Relational Databases 193 | |||||||
| SQL 194 | |||||||
| DB-API 195 | |||||||
| SQLite 196 | |||||||
| MySQL 198 | |||||||
| PostgreSQL 198 | |||||||
| SQLAlchemy 198 | |||||||
| NoSQL Data Stores 204 | |||||||
| The dbm Family 204 | |||||||
| Memcached 205 | |||||||
| Redis 206 | |||||||
| Other NoSQL 214 | |||||||
| Full-Text Databases 214 | |||||||
| Things to Do 215 | |||||||
| 9. The Web, Untangled 217 | |||||||
| Web Clients 218 | |||||||
| Test with telnet 219 | |||||||
| Python’s Standard Web Libraries 220 | |||||||
| Beyond the Standard Library: Requests 222 | |||||||
| Web Servers 223 | |||||||
| The Simplest Python Web Server 223 | |||||||
| Web Server Gateway Interface 224 | |||||||
| Frameworks 225 | |||||||
| Bottle 226 | |||||||
| Flask 228 | |||||||
| Non-Python Web Servers 232 | |||||||
| Other Frameworks 234 | |||||||
| Web Services and Automation 236 | |||||||
| The webbrowser Module 236 | |||||||
| Web APIs and Representational State Transfer 236 | |||||||
| JSON 237 | |||||||
| Crawl and Scrape 237 | |||||||
| Scrape HTML with BeautifulSoup 238 | |||||||
| Things to Do 239 | |||||||
| 10. Systems 241 | |||||||
| Files 24 | |||||||
| Create with open() 241 | |||||||
| Check Existence with exists() 242 | |||||||
| Check Type with isfile() 242 | |||||||
| Copy with copy() 243 | |||||||
| Change Name with rename() 243 | |||||||
| Link with link() or symlink() 243 | |||||||
| Change Permissions with chmod() 243 | |||||||
| Change Ownership with chown() 244 | |||||||
| Get a Pathname with abspath() 244 | |||||||
| Get a symlink Pathname with realpath() 244 | |||||||
| Delete a File with remove() 244 | |||||||
| Directories 244 | |||||||
| Create with mkdir() 245 | |||||||
| Delete with rmdir() 245 | |||||||
| List Contents with listdir() 245 | |||||||
| Change Current Directory with chdir() 246 | |||||||
| List Matching Files with glob() 246 | |||||||
| Programs and Processes 247 | |||||||
| Create a Process with subprocess 247 | |||||||
| Create a Process with multiprocessing 249 | |||||||
| Kill a Process with terminate() 249 | |||||||
| Calendars and Clocks 250 | |||||||
| The datetime Module 251 | |||||||
| Using the time Module 254 | |||||||
| Read and Write Dates and Times 255 | |||||||
| Alternative Modules 258 | |||||||
| Things to Do 259 | |||||||
| 11. Concurrency and Networks 261 | |||||||
| Concurrency 262 | |||||||
| Queues 263 | |||||||
| Processes 264 | |||||||
| Threads 265 | |||||||
| Green Threads and gevent 267 | |||||||
| twisted 270 | |||||||
| asyncio 271 | |||||||
| Redis 271 | |||||||
| Beyond Queues 275 | |||||||
| Networks 276 | |||||||
| Patterns 276 | |||||||
| The Publish-Subscribe Model 276 | |||||||
| TCP/IP 28 | |||||||
| Sockets 281 | |||||||
| ZeroMQ 285 | |||||||
| Scapy 289 | |||||||
| Internet Services 290 | |||||||
| Web Services and APIs 291 | |||||||
| Remote Processing 292 | |||||||
| Big Fat Data and MapReduce 297 | |||||||
| Working in the Clouds 298 | |||||||
| Things to Do 302 | |||||||
| 12. Be a Pythonista 303 | |||||||
| About Programming 303 | |||||||
| Find Python Code 304 | |||||||
| Install Packages 304 | |||||||
| Use pip 305 | |||||||
| Use a Package Manager 305 | |||||||
| Install from Source 306 | |||||||
| Integrated Development Environments 306 | |||||||
| IDLE 306 | |||||||
| PyCharm 306 | |||||||
| IPython 307 | |||||||
| Name and Document 307 | |||||||
| Testing Your Code 309 | |||||||
| Check with pylint, pyflakes, and pep8 309 | |||||||
| Test with unittest 311 | |||||||
| Test with doctest 315 | |||||||
| Test with nose 316 | |||||||
| Other Test Frameworks 317 | |||||||
| Continuous Integration 317 | |||||||
| Debugging Python Code 317 | |||||||
| Debug with pdb 318 | |||||||
| Logging Error Messages 324 | |||||||
| Optimize Your Code 326 | |||||||
| Measure Timing 327 | |||||||
| Algorithms and Data Structures 328 | |||||||
| Cython, NumPy, and C Extensions 329 | |||||||
| PyPy 330 | |||||||
| Source Control 330 | |||||||
| Mercurial 330 | |||||||
| Git 330 | |||||||
| Clone This Book 333 | |||||||
| How You Can Learn More 333 | |||||||
| Books 334 | |||||||
| Websites 334 | |||||||
| Groups 335 | |||||||
| Conferences 335 | |||||||
| Coming Attractions 335 | |||||||
| A. Py Art 337 | |||||||
| B. Py at Work 351 | |||||||
| C. Py Sci 365 | |||||||
| Math and Stastics in the Standard Library | |||||||
| Math Functions | |||||||
| Working with Complex Numbers | |||||||
| Calculating Accurate Floating Point with decimal | |||||||
| Peform Rational Arithmetic with fractions | |||||||
| Use Packed Sequences with array | |||||||
| Handle Simple Stats bu Using statistics | |||||||
| Matrix Multiplication | |||||||
| Scientific Python | |||||||
| NumPy | |||||||
| Make an Array with array() | |||||||
| Make an Array with arange() | |||||||
| Make an Array with zeros(), ones(), or random() | |||||||
| Change an Array’s Shape with reshape() | |||||||
| Get an Element with [] | |||||||
| Array Math | |||||||
| Linear Algebra | |||||||
| The SiPy Library | |||||||
| The SiKit Library | |||||||
| The IPython Library | |||||||
| A Better Interpreter | |||||||
| IPython Notebook | |||||||
| Python and Scientific Areas | |||||||
| D. Install Python 3 385 | |||||||
| Install Standard Python | |||||||
| Mac OS X | |||||||
| Windows | |||||||
| Linux or Unix | |||||||
| Install Anaconda | |||||||
| Install and Use ip and virtualenv | |||||||
| Install and use Conda | |||||||
| E. Answers to Exercises 395 | |||||||
| F. Cheat Sheets 429 | |||||||
| Operator Preedence | |||||||
| String Methods | 12 | 12 | 200 | 51885 51865 51870 51856 51857 51858 51859 51860 51861 51862 51863 51864 | String Coparisons and Logical Operations (mostly better solved with string methods) | ||
| Begin week 11 CodeLab | |||||||
| String Methods | 5 | 5 | 205 | 51757 51758 51759 51766 51767 | More Methods | ||
| String Methods | 4 | 4 | 209 | 51768 51769 51770 51773 | More Methods | ||
| String Module Attributes | |||||||
| Index 433 | |||||||
| No Reading assignment | |||||||
| Not found in book | |||||||
| try finally block | |||||||
| No switch in Python | 3 | 0 | 209 | 51909 51894 51895 | switch | ||
| Conditional Expressions | 2 | 2 | 211 | 51867 51866 | Conditional Expressions | ||
| NOTE: omit Old Formatting | |||||||
| NOTE: omit Additional Exercises | |||||||
| Net: | |||||||
| Required total | 211 | ||||||