Introduction to Python Programming (Revision 2020)
معرفی کتاب «Introduction to Python Programming (Revision 2020)» نوشتهٔ 费孝通著، 刘豪兴编، 费孝通، 刘豪兴 و Pavel Solin، منتشرشده توسط نشر 2020 در سال 2020. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است.
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Why learn Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Compiled and interpreted programming languages . . . . . . . . . . . . . . . . . . . . . 2 1.4 A few more details about Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.5 Create a user account in NCLab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.6 Working in the cloud setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.7 Internet connection requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.8 Recommended devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Using Python as a Scientific Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Why use Python as a calculator? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Addition and subtraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.4 Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.5 Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.6 Floor division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.7 Modulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.8 Powers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.9 Priority of operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.10 Using empty spaces makes your code more readable . . . . . . . . . . . . . . . . . . . 9 2.11 Importing the Numpy library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.12 Finite computer arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.13 Rounding numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.14 List of math functions and constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.15 Using the Fractions library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.16 Working with random numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.17 Complex numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3 Drawing, Plotting, and Data Visualization with Matplotlib . . . . . . . . . . . . . . . . . . 15 3.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2 Why learn about data visualization with Python? . . . . . . . . . . . . . . . . . . . . . . . 15 3.3 RGB colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4 Secondary colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.5 Figuring out RGB codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.6 RGB color palettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.7 Starting with Matplotlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.8 Two ways to specify color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.9 Making axes equally scaled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.10 Filling shapes with color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.11 Borders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.12 Interrupting lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.13 Making holes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.14 Plotting functions of one variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.15 Line style, label, and legend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.16 Showing the grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.17 Adjusting plot limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.18 Plotting multiple functions at once . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.19 Plotting circles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.20 Making a circular hole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.21 Plotting ellipses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.22 Plotting spirals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.23 Parametric curves in the 3D space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.24 Wireframe plots of functions of two variables . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.25 Surface plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.26 Color maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.27 Contour plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.28 Changing view and adding labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.29 Patches and artists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.30 Pie charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.31 Donut charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.32 Bar charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.33 Statistical data visualization with the Seaborn library . . . . . . . . . . . . . . . . . . 52 3.34 Interactive scientific data visualization with Mayavi2 . . . . . . . . . . . . . . . . . . 53 4 Working with Text Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.2 Why learn about text strings? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.3 Defining text strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.4 Storing text strings in variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.5 Measuring the length of text strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.6 Python is case-sensitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.7 The print function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.8 Function help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.9 Changing the default behavior of the print function . . . . . . . . . . . . . . . . . . . 57 4.10 Undesired trailing spaces and function repr . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.11 Cleaning text strings with strip, lstrip, and rstrip . . . . . . . . . . . . . . . 59 ii 4.12 Wait - what is a "method" exactly? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.13 Calling text string methods on raw text strings . . . . . . . . . . . . . . . . . . . . . . . . 61 4.14 Using single and double quotes in text strings . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.15 A more robust approach - using characters \’ and \" . . . . . . . . . . . . . . . . . . . 62 4.16 Length of text strings containing special characters . . . . . . . . . . . . . . . . . . . . 62 4.17 Newline character \n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.18 Writing long code lines over multiple lines with the backslash \ . . . . . . . . 63 4.19 Multiline strings enclosed in triple quotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.20 Adding text strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.21 Multiplying text strings with integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.22 Parsing text strings with the for loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.23 Reversing text strings with the for loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.24 Accessing individual characters via their indices . . . . . . . . . . . . . . . . . . . . . . . 68 4.25 Using negative indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.26 ASCII table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.27 Finding the ASCII code of a given character . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.28 Finding the character for a given ASCII code . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.29 Slicing text strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.30 Third index in the slice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.31 Creating copies of text strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.32 Reversing text strings using slicing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.33 Retrieving current date and time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.34 Making text strings lowercase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.35 Checking for substrings in a text string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.36 Making the search case-insensitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.37 Making text strings uppercase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.38 Finding and replacing substrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.39 Counting occurrences of substrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.40 Locating substrings in text strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.41 Splitting a text string into a list of words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.42 Splitting a text string while removing punctuation . . . . . . . . . . . . . . . . . . . . . 77 4.43 Joining a list of words into a text string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.44 Method isalnum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.45 Method isalpha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.46 Method isdigit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.47 Method capitalize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.48 Method title . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.49 C-style string formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.50 Additional string methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 iii 4.51 The string library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.52 Natural language toolkit (NLTK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5 Variables and Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.2 Why learn about variables? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.3 Statically vs. dynamically typed languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.4 Types of variables (data types) in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.5 Using a non-initialized variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.6 Various ways to create variables and initialize them with values . . . . . . . . . 85 5.7 Casting variables to text strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.8 Casting can be tricky sometimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.9 Inadmissible casting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 5.10 Dynamic type interpretation and its abuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 5.11 Determining the type of a variable at runtime . . . . . . . . . . . . . . . . . . . . . . . . . 89 5.12 Operators +=, -=, *= and \= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.13 Local and global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 5.14 Using global variables in functions can get you in trouble . . . . . . . . . . . . . . 92 5.15 Changing global variables in functions can get you in big trouble . . . . . . . 93 5.16 Shadowing of variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 5.17 Callable variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 6 Boolean Values, Functions, Expressions, and Variables . . . . . . . . . . . . . . . . . . . . . . 95 6.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 6.2 Why learn about Booleans? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 6.3 Boolean values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 6.4 Boolean functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 6.5 Comparison operators for numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 6.6 Comparison operator == vs. assignment operator = . . . . . . . . . . . . . . . . . . . . . 97 6.7 Comparison operators for text strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 6.8 Storing results of Boolean expressions in variables . . . . . . . . . . . . . . . . . . . . . . 98 6.9 Example: Checking if there exists a triangle with edge lengths a, b, c . . . . . . 99 6.10 Logical and and its truth table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.11 Logical or and its truth table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 6.12 Negation not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6.13 Booleans in conditions and the while loop . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6.14 Example: Monte Carlo calculation of . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 7 Lists, Tuples, Dictionaries, and Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 7.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 7.2 Why learn about lists? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 7.3 Creating a list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 iv 7.4 Important properties of lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7.5 Measuring the length of a list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7.6 Appending new items to lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7.7 Adding lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 7.8 Adding is not appending . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 7.9 Multiplying lists with integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 7.10 Parsing lists with the for loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 7.11 Accessing list items via their indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 7.12 Slicing lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 7.13 Creating a copy of a list – the wrong way and the right way . . . . . . . . . . . . 111 7.14 Popping list items by index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 7.15 Deleting list items by index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 7.16 Checking if an item is in a list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 7.17 Locating an item in a list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 7.18 Finding and deleting an item from a list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 7.19 Finding and deleting all occurrences of an item . . . . . . . . . . . . . . . . . . . . . . . . 115 7.20 Counting occurrences of items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 7.21 Inserting list items at arbitrary positions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 7.22 Sorting a list in place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 7.23 Creating sorted copy of a list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 7.24 Using key functions in sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 7.25 Using lambda functions in sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 7.26 Reversing a list in place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 7.27 Creating reversed copy of a list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 7.28 Zipping lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 7.29 List comprehension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.30 List comprehension with if statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.31 List comprehension with if and else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 7.32 List comprehension with nested loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 7.33 Mutable and immutable objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 7.34 Mutability of lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 7.35 Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 7.36 Read-only property of tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 7.37 Immutability of tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 7.38 Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 7.39 Creating an empty and nonempty dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . 129 7.40 Keys, values, and items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 7.41 Accessing values using keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 7.42 Adding, updating, and deleting items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 v 7.43 Checking for keys, values, and items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 7.44 Finding all keys for a given value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 7.45 Finding all keys for a given value using comprehension . . . . . . . . . . . . . . . . 132 7.46 Reversing a dictionary using comprehension . . . . . . . . . . . . . . . . . . . . . . . . . . 133 7.47 Beware of repeated values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 7.48 Creating a dictionary from two lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 7.49 Reversing a dictionary using zip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 7.50 Creating a copy of a dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 7.51 Merging dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 7.52 Adding dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 7.53 Composing dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 7.54 Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 7.55 Creating sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 7.56 Adding and removing elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 7.57 Popping random elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.58 Checking if an element is in a set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 7.59 Checking for subsets and supersets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 7.60 Intersection and union. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 7.61 Difference and symmetric difference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 7.62 Using a set to remove duplicated items from a list . . . . . . . . . . . . . . . . . . . . . 143 8 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 8.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 8.2 Why learn about functions? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 8.3 Defining new functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 8.4 Docstrings and function help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 8.5 Function parameters vs. arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 8.6 Names of functions should reveal their purpose . . . . . . . . . . . . . . . . . . . . . . . . 146 8.7 Functions returning multiple values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 8.8 What is a wrapper? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 8.9 Using parameters with default values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 8.10 Functions accepting a variable number of arguments . . . . . . . . . . . . . . . . . . 151 8.11 args is not a keyword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 8.12 Passing a list as *args . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 8.13 Obtaining the number of *args . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 8.14 Combining standard arguments and *args . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 8.15 Using keyword arguments *kwargs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 8.16 Passing a dictionary as **kwargs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 8.17 Defining local functions within functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 8.18 Anonymous lambda functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 vi 8.19 Creating multiline lambdas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 8.20 Using lambdas to create a live list of functions . . . . . . . . . . . . . . . . . . . . . . . . . 159 8.21 Using lambdas to create a live table of functions . . . . . . . . . . . . . . . . . . . . . . . 160 8.22 Using lambdas to create a live table of logic gates . . . . . . . . . . . . . . . . . . . . . . 160 8.23 Using lambdas to create a factory of functions . . . . . . . . . . . . . . . . . . . . . . . . . 161 8.24 Variables of type ’function’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 8.25 Inserting conditions into lambda functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 8.26 Using lambdas to customize sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 8.27 Obtaining useful information about functions from their attributes . . . . . . 164 9 The ’For’ Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 9.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 9.2 Why learn about the for loop? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 9.3 Parsing text strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 9.4 Splitting a text string into a list of words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 9.5 Parsing lists and tuples (including comprehension) . . . . . . . . . . . . . . . . . . . . . 166 9.6 Parsing two lists simultaneously . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 9.7 Iterating over sequences of numbers and the built-in function range. . . . . 167 9.8 Parsing dictionaries (including comprehension) . . . . . . . . . . . . . . . . . . . . . . . . 168 9.9 Nested for loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 9.10 Terminating loops with the break statement . . . . . . . . . . . . . . . . . . . . . . . . . . 170 9.11 Terminating current loop cycle with continue . . . . . . . . . . . . . . . . . . . . . . . 171 9.12 The for-else statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 9.13 The for loop behind the scenes – iterables and iterators . . . . . . . . . . . . . . . . 175 9.14 Making your own classes iterable . . . . . . . . . . . . . . .
دانلود کتاب Introduction to Python Programming (Revision 2020)