DATA STRUCTURE AND
ALGORITHM USING PYTHON
Python Overview and Programming Basic
Peter Lo
Who am I?
Lo Chi Wing, Peter
◼ Email: Peter@Peter-Lo.com
◼ Facebook: http://www.facebook.com/PeterLo111
Data Structure and Algorithm using Python @ Peter Lo 2019 2
Course Outline
Lesson 1 Python Overview and Programming Basic
Lesson 2 Python Data Structure and Flow Control
Lesson 3 Function, Module and Class
Lesson 4 Advanced Data Structure and File Manipulation
Lesson 5 Sorting and Search Algorithms
Lesson 6 Using External Module and Library I
Lesson 7 Using External Module and Library II
Data Structure and Algorithm using Python @ Peter Lo 2019 3
Where can you find the material?
Workshop Notes
http://www.Peter-Lo.com/Teaching/AMA-Python/
Python Official Page
http://www.python.org
Data Structure and Algorithm using Python @ Peter Lo 2019 4
Overview
Introduction to Programming Language and
Python
Data Structure and Algorithm using Python @ Peter Lo 2019 5
What is Programming Languages?
A programming language is a computer language
engineered to create a standard form of commands.
These commands can be interpreted into a code
understood by a machine.
Programs are created through programming languages
to control the behavior and output of a machine through
accurate algorithms, similar to the human
communication process.
Data Structure and Algorithm using Python @ Peter Lo 2019 6
How Computer Understanding Program?
Computers do not understand human languages, so
programs must be written in a language a computer can
use.
There are hundreds of programming languages, and
they were developed to make the programming process
easier for people.
All programs must be converted into a language the
computer can understand.
Data Structure and Algorithm using Python @ Peter Lo 2019 7
Low-Level Computer Languages
Computer hardware can only understand a very low
level language known as machine language
Data Structure and Algorithm using Python @ Peter Lo 2019 8
High-Level Computer Languages
A program written in a high-level language is called a
source program or source code.
Computer cannot understand source program, source
program must be translated into machine code for
execution.
The translation can be done using another programming
tool called an interpreter or a compiler.
Data Structure and Algorithm using Python @ Peter Lo 2019 9
Low-Level vs. High-Level Languages
Low-Level Language High-Level Language
These are interpreted Direct memory management
They have open classes and Hardware has extemely little
message-style methods abstraction which is actually
which are known as Dynamic close to having none
constructs
Poor performance Much faster than high level
Codes are concise Statement correspond directly
Flexible syntax and easy to to clock cycle
read Super performance but hard
Is object oriented and to write
functional Few support and hard to
Large community learn
Data Structure and Algorithm using Python @ Peter Lo 2019 10
Interpreter and Compiler
An Interpreter reads one statement from the source
code, translates it to the machine code or virtual
machine code, and then executes it right away
A Compiler translates the entire source code into a
machine-code file, and the machine code file is then
executed
Data Structure and Algorithm using Python @ Peter Lo 2019 11
Top 10 Programming Languages
According to IEEE Spectrum's interactive ranking,
Python is the top programming language of 2018,
followed by C++, C and Java.
Source: https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2018
Data Structure and Algorithm using Python @ Peter Lo 2019 12
What is Python?
Python is a general-purpose, interpreted, object-oriented
programming language.
It is used for:
Web development
Software development
Mathematics
System scripting
Data Structure and Algorithm using Python @ Peter Lo 2019 13
What can Python do?
Used on a server to create web applications
Used alongside software to create workflows
Connect to database systems. It can also read and
modify files
Handle big data and perform complex mathematics
Create rapid prototyping, or for production-ready
software development
Data Structure and Algorithm using Python @ Peter Lo 2019 14
Why Python?
Works on different platforms (Windows, Linux, etc.)
Has a simple syntax similar to the English language
Has syntax that allows developers to write programs
with fewer lines than some other programming
languages.
Runs on an interpreter system, meaning that code can
be executed as soon as it is written. This means that
prototyping can be very quick.
Can be treated in a procedural way, an object-orientated
way or a functional way.
Data Structure and Algorithm using Python @ Peter Lo 2019 15
Development Tools
Jupyter Notebooks
Data Structure and Algorithm using Python @ Peter Lo 2019 16
What is Jupyter Notebook?
The Jupyter Notebook is an open-source web
application that allows you to create and share
documents that contain live code, equations,
visualizations and narrative text.
It provides an environment, where you can document
your code, run it, look at the outcome, visualize data and
see the results without leaving the environment.
This makes it a handy tool for performing end to end
data science workflows – data cleaning, statistical
modeling, building and training machine learning models,
visualizing data, and many, many other uses
much more.
Data Structure and Algorithm using Python @ Peter Lo 2019 17
Cell Type
Cell Type Description
Code This is self-explanatory; it is where you type your code
Markdown This is where you type your text. You can add your
conclusions after running a code, add comments, etc.
Heading This is where you add Headings to separate sections and
make your notebook look tidy and neat. This has now been
converted into the Markdown option itself. Add a ‘##’ to
ensure that whatever you type after that will be taken as a
heading
Data Structure and Algorithm using Python @ Peter Lo 2019 18
Running Code
Select Cell ➔ Run Cells to run the code (or press [Ctrl]
+ [Enter])
Select Cell ➔ Run Cells and Select Below to run the
code and move to next cell (or press [Shift] + [Enter])
Select Cell ➔ Run Cells and Insert Below to run the
code and then insert a next line
Select Cell ➔ Run All to run all the code in notebook
Select Cell ➔ Run All Above to run the code in
highlighted cell and above
Select Cell ➔ Run All Below to run the code in
highlighted cell and below
Data Structure and Algorithm using Python @ Peter Lo 2019 19
Saving and Sharing Notebook
You can save your Notebook in any of the options
provided.
The most commonly used is save as .ipynb file so other
person can replicate your code on their machine
Data Structure and Algorithm using Python @ Peter Lo 2019 20
Hello World
There is a long-standing custom in the field of computer
programming that the first code written in a newly
installed language is a short program that simply
displays the string “Hello World” to the console.
In this program, we have used the built-in print()
function to print the string “Hello World” on screen.
Data Structure and Algorithm using Python @ Peter Lo 2019 21
Obtain User Input
Python has a built-in function input() to accept user
input. This function reads a line from an input and
converts into a string and returns it, then you can use
this input string in your python program
Data Structure and Algorithm using Python @ Peter Lo 2019 22
Programming Basic
Variables and Constants
Data Structure and Algorithm using Python @ Peter Lo 2019 23
Variables
Variable is a named location used to store data in the
memory in most of the programming languages.
Each variable must have a unique name called identifier.
It is helpful to think of variables as container that hold
data which can be changed later throughout
programming.
Non technically, you can suppose variable as a bag to
store books in it and those books can be replaced at
anytime.
Data Structure and Algorithm using Python @ Peter Lo 2019 24
Variable in Python
Declaring Variables
Variables do not need declaration to reserve memory
space. The "variable declaration" or "variable initialization"
happens automatically when we assign a value to a
variable.
Assigning value to a Variable
You can use the assignment operator = to assign the value
to a variable.
Data Structure and Algorithm using Python @ Peter Lo 2019 25
Re-declare Variable
In Python, you can re-declare the variable even after you have
declared it once.
Data Structure and Algorithm using Python @ Peter Lo 2019 26
Variable Names
A variable can have a short name (like x and y) or a
more descriptive name (age, CarName, Total_Volume).
Rules for Python variables name:
Must start with a letter or underscore
Cannot start with a number
Can only contain alpha-numeric characters and
underscores (A-z, 0-9, and _ )
Case-sensitive (age, Age and AGE are three different
variables)
Data Structure and Algorithm using Python @ Peter Lo 2019 27
Reserved Words
Reserved words in Python and used to perform an
internal operation. You can not use reserved words as
variable names or identifiers
Data Structure and Algorithm using Python @ Peter Lo 2019 28
Variable Naming Convention
The most commonly used methods of constructing a
multi-word variable name are:
Camel Case: Second and subsequent words are
capitalized, to make word boundaries easier to see.
◼ Example: numberOfStudent
Pascal Case: Identical to Camel Case, except the
first word is also capitalized.
◼ Example: NumberOfStudent
Snake Case: Words are separated by underscores.
◼ Example: number_of_student
Data Structure and Algorithm using Python @ Peter Lo 2019 29
Object Identity
In Python, every object that is created is given a number
that uniquely identifies it.
It is guaranteed that no two objects will have the same
identifier during any period in which their lifetimes
overlap.
Once an object’s reference count drops to zero and it is
garbage collected, then its identifying number becomes
available and may be used again.
Data Structure and Algorithm using Python @ Peter Lo 2019 30
Object Identity Example
The built-in Python function id() returns an object’s
integer identifier. Using the id() function, you can verify
that two variables indeed point to the same object:
Data Structure and Algorithm using Python @ Peter Lo 2019 31
Object Identity Example (Cont.)
Statement
This assignment creates an integer object with the value
300 and assigns the variable n to point to that object
Data Structure and Algorithm using Python @ Peter Lo 2019 32
Object Identity Example (Cont.)
Statement
Python does not create another object. It simply creates
a new symbolic name or reference, m, which points to
the same object that n points to.
Data Structure and Algorithm using Python @ Peter Lo 2019 33
Object Identity Example (Cont.)
Statement
Python creates a new integer object with the value 400,
and m becomes a reference to it.
Data Structure and Algorithm using Python @ Peter Lo 2019 34
Commenting Code
In general, commenting is describing your code for
developers.
In conjunction with well-written code, comments help to
guide the reader to better understand your code and its
purpose and design
Comments are created in Python using the pound sign
(#) and should be brief statements no longer than a few
sentences.
Data Structure and Algorithm using Python @ Peter Lo 2019 35
Structuring with Indentation
Python programs get structured
through indentation,
i.e. code blocks are defined by
their indentation
Data Structure and Algorithm using Python @ Peter Lo 2019 36
Basic Data Type
Common Build-in Data Types and
Operators in Python
Data Structure and Algorithm using Python @ Peter Lo 2019 37
Basic Data Types in Python
fdsf
Data Structure and Algorithm using Python @ Peter Lo 2019 38
Integer
In Python 3, there is effectively no limit to how long an
integer value can be.
Of course, it is constrained by the amount of memory
your system has, as are all things, but beyond that an
integer can be as long as you need it to be:
Data Structure and Algorithm using Python @ Peter Lo 2019 39
Hexadecimal
The following strings can be prepended to an integer
value to indicate a base other than 10:
Data Structure and Algorithm using Python @ Peter Lo 2019 40
ASCII Table
Data Structure and Algorithm using Python @ Peter Lo 2019 41
Floating-Point Numbers
The float type in Python designates a floating-point
number. float values are specified with a decimal point.
Optionally, the character e or E followed by a positive or
negative integer may be appended to specify scientific
notation:
Data Structure and Algorithm using Python @ Peter Lo 2019 42
Strings
Strings are sequences of character data. The string type
in Python is called str.
String literals may be delimited using either single or
double quotes. All the characters between the opening
delimiter and matching closing delimiter are part of the
string:
Data Structure and Algorithm using Python @ Peter Lo 2019 43
Interpolating Variables into a String
In Python version 3.6, a new string formatting
mechanism was introduced. This feature is formally
named the Formatted String Literal, but is more usually
referred to by its nickname f-string
Data Structure and Algorithm using Python @ Peter Lo 2019 44
String Formatting Operator
One of Python's coolest features is the string format
operator %.
Data Structure and Algorithm using Python @ Peter Lo 2019 45
Escape Sequences in Strings
Sometimes, you want Python to interpret a character or
sequence of characters within a string differently. This may
occur in one of two ways:
You may want to suppress the special interpretation that
certain characters are usually given within a string.
You may want to apply special interpretation to characters
in a string which would normally be taken literally.
You can accomplish this using a backslash (\) character. A
backslash character in a string indicates that one or more
characters that follow it should be treated specially.
Data Structure and Algorithm using Python @ Peter Lo 2019 46
Escape Sequences
The following table list the escape sequences which
cause Python to suppress the usual special
interpretation of a character in a string:
Data Structure and Algorithm using Python @ Peter Lo 2019 47
Escape Sequences (Cont.)
Data Structure and Algorithm using Python @ Peter Lo 2019 48
Escape Sequences
Escape sequence is typically used to insert characters
that are not readily generated from the keyboard or are
not easily readable or printable.
Data Structure and Algorithm using Python @ Peter Lo 2019 49
Raw Strings
A raw string literal is preceded by r or R, which specifies
that escape sequences in the associated string are not
translated.
The backslash character is left in the string:
Data Structure and Algorithm using Python @ Peter Lo 2019 50
Boolean Type
Python 3 provides a Boolean data type.
Objects of Boolean type may have one of two values,
True or False:
Data Structure and Algorithm using Python @ Peter Lo 2019 51
Operators
Operators are special symbols in Python that carry out
arithmetic or logical computation. The value that the
operator operates on is called the operand.
Data Structure and Algorithm using Python @ Peter Lo 2019 52
Arithmetic Operators
Arithmetic operators are used to perform mathematical
operations like addition, subtraction, multiplication etc.
Data Structure and Algorithm using Python @ Peter Lo 2019 53
Example
Data Structure and Algorithm using Python @ Peter Lo 2019 54
Comparison Operators
Comparison operators are used to compare values. It
either returns True or False according to the condition.
Data Structure and Algorithm using Python @ Peter Lo 2019 55
Example
Data Structure and Algorithm using Python @ Peter Lo 2019 56
Logical Operators
Interpretation of logical expressions involving not, or,
and and is straightforward when the operands are
Boolean:
Data Structure and Algorithm using Python @ Peter Lo 2019 57
Assignment Operators
Assignment operators are used in Python to assign
values to variables.
Data Structure and Algorithm using Python @ Peter Lo 2019 58
Strings Manipulation
Manipulating Strings using Operator and
Build-in Function
Data Structure and Algorithm using Python @ Peter Lo 2019 59
Concatenate String
The + operator concatenates strings. It returns a string
consisting of the operands joined together.
Data Structure and Algorithm using Python @ Peter Lo 2019 60
Repeating String
The * operator creates multiple copies of a string.
Data Structure and Algorithm using Python @ Peter Lo 2019 61
Exist in String
Python also provides a membership operator that can
be used with strings. The in operator returns True if the
first operand is contained within the second, and False
otherwise
Data Structure and Algorithm using Python @ Peter Lo 2019 62
String Length
By using the function len( ), the length of the string can
be obtained.
Data Structure and Algorithm using Python @ Peter Lo 2019 63
Capitalize First Character
capitalize() returns a copy of string with the first
character converted to uppercase and all other
characters converted to lowercase.
Data Structure and Algorithm using Python @ Peter Lo 2019 64
Convert to Upper Case
upper() returns a copy of string with all alphabetic
characters converted to uppercase
Data Structure and Algorithm using Python @ Peter Lo 2019 65
Convert to Lower Case
lower() returns a copy of string with all alphabetic
characters converted to lowercase.
Data Structure and Algorithm using Python @ Peter Lo 2019 66
Convert to Title Case
title() returns a copy of string in which the first letter of
each word is converted to uppercase and remaining
letters are lowercase
This method uses a fairly simple algorithm. It does not
attempt to distinguish between important and
unimportant words, and it does not handle apostrophes,
possessives, or acronyms gracefully
Data Structure and Algorithm using Python @ Peter Lo 2019 67
Swaps Case of Characters
swapcase() returns a copy of string with uppercase
alphabetic characters converted to lowercase and vice
versa
Data Structure and Algorithm using Python @ Peter Lo 2019 68
String Indexing
String indexing in Python is zero-based: the first
character in the string has index 0, the next has index 1,
and so on. The index of the last character will be the
length of the string minus one.
For example, a schematic diagram of the indices of the
string 'foobar' would look like this:
Data Structure and Algorithm using Python @ Peter Lo 2019 69
String Indexing (Cont.)
The individual characters can be accessed by index as
follows:
Data Structure and Algorithm using Python @ Peter Lo 2019 70
String Slicing
Python also allows a form of indexing syntax that
extracts substrings from a string, known as string slicing.
If s is a string, an expression of the form s[m:n] returns
the portion of s starting with position m, and up to but
not including position n:
Data Structure and Algorithm using Python @ Peter Lo 2019 71
Specifying a Stride in a String Slice
A third index designates a stride (step) can be added to
slicing, which indicates how many characters to jump
after retrieving each character in the slice.
For example, for the string 'foobar', the slice 0:6:2
starts with the first character and ends with the last
character (the whole string), and every second
character is skipped.
Similarly, 1:6:2 specifies a slice starting with the
second character (index 1) and ending with the last
character, and again the stride value 2 causes every
other character to be skipped.
Data Structure and Algorithm using Python @ Peter Lo 2019 72
Counts Occurrences of Substring
count(<sub>) returns the number of non-overlapping
occurrences of substring <sub> in string:
The count is restricted to the
number of occurrences within the
substring indicated by <start> and
<end>, if they are specified:
Data Structure and Algorithm using Python @ Peter Lo 2019 73
Determine Start String
startswith(<suffix>) returns True if target string starts
with the specified <suffix> and False otherwise
The comparison is restricted to the substring
indicated by <start> and <end>, if they are
specified
Data Structure and Algorithm using Python @ Peter Lo 2019 74
Determines End String
endswith(<suffix>) returns True if target string ends with
the specified <suffix> and False otherwise
The comparison is restricted to the substring
indicated by <start> and <end>, if they are
specified
Data Structure and Algorithm using Python @ Peter Lo 2019 75
Searches for Substring
find(<sub>) returns the lowest index in target string
where substring <sub> is found
Returns -1 if the specified substring not found
The search is restricted to the substring
indicated by <start> and <end>, if they are
specified
Data Structure and Algorithm using Python @ Peter Lo 2019 76
Searches for Substring (Cont.)
rfind(<sub>) returns the highest index in target string
where substring <sub> is found
Returns -1 if the specified substring not found
The search is restricted to the substring
indicated by <start> and <end>, if they are
specified
Data Structure and Algorithm using Python @ Peter Lo 2019 77
Trim Leading Space
lstrip() returns a copy of target string with any
whitespace characters removed from the left end
If the optional <chars> argument is specified, it
is a string that specifies the set of characters to
be removed
Data Structure and Algorithm using Python @ Peter Lo 2019 78
Trim Trailing Space
rstrip() returns a copy of target string with any
whitespace characters removed from the right end
If the optional <chars> argument is specified, it
is a string that specifies the set of characters to
be removed
Data Structure and Algorithm using Python @ Peter Lo 2019 79
Trim Leading and Trailing Space
strip(<chars>) is essentially equivalent to invoking
lstrip() and rstrip() in succession. Without the <chars>
argument, it removes leading and trailing whitespace.
As with .lstrip() and .rstrip(), the optional <chars>
argument specifies the set of characters to be removed
Data Structure and Algorithm using Python @ Peter Lo 2019 80
Pad Leading Zero
zfill(<width>) returns a copy of target string left-padded
with '0' characters to the specified <width>
If a string contains a leading sign, it remains at the
left edge of the result string after zeros are inserted
If string is already at least as long as <width>, it is
returned unchanged
Data Structure and Algorithm using Python @ Peter Lo 2019 81
Alphanumeric Determination
isalnum() returns True if target string is nonempty and
all its characters are alphanumeric (either a letter or a
number), and False otherwise
Data Structure and Algorithm using Python @ Peter Lo 2019 82
Alphabetic Determination
isalpha() returns True if target string is nonempty and all
its characters are alphabetic, and False otherwise
Data Structure and Algorithm using Python @ Peter Lo 2019 83
Digit Determination
isdigit() returns True if target string is nonempty and all
its characters are numeric digits, and False otherwise
Data Structure and Algorithm using Python @ Peter Lo 2019 84
Upper Case Determination
isupper() returns True if target string is nonempty and
all the alphabetic characters it contains are uppercase,
and False otherwise. Non-alphabetic characters are
ignored
Data Structure and Algorithm using Python @ Peter Lo 2019 85
Lower Case Determination
islower() returns True if target string is nonempty and all
the alphabetic characters it contains are lowercase, and
False otherwise.
Non-alphabetic characters are ignored
Data Structure and Algorithm using Python @ Peter Lo 2019 86
Title Case Determination
istitle() returns True if target string is nonempty, the first
alphabetic character of each word is uppercase, and all
other alphabetic characters in each word are lowercase.
It returns False otherwise.
Data Structure and Algorithm using Python @ Peter Lo 2019 87
Printable Character Determination
isprintable() returns True if target string is empty or all
the alphabetic characters it contains are printable.
It returns False if target string contains at least one non-
printable character.
Non-alphabetic characters are ignored
Data Structure and Algorithm using Python @ Peter Lo 2019 88
Space Determination
isspace() returns True if target sting is nonempty and all
characters are whitespace characters, and False
otherwise.
The most commonly encountered whitespace characters
are space ' ', tab '\t', and newline '\n'
'\f' and '\r' are the escape sequences for the ASCII Form
Feed and Carriage Return characters; '\u2005' is the
escape sequence for the Unicode Four-Per-Em Space.
Data Structure and Algorithm using Python @ Peter Lo 2019 89
Naming Convention
PEP 8 – Style Guide for Python Code
Data Structure and Algorithm using Python @ Peter Lo 2019 90
PEP 8 – Style Guide for Python Code
PEP 8 is a Style Guide for Python Code, which gives
coding conventions for the Python code comprising the
standard library in the main Python distribution.
https://www.python.org/dev/peps/pep-0008/
This style guide evolves over time as additional
conventions are identified and past conventions are
rendered obsolete by changes in the language itself.
Many projects have their own coding style guidelines. In
the event of any conflicts, such project-specific guides
take precedence for that project.
Data Structure and Algorithm using Python @ Peter Lo 2019 91
Code Layout
Use 4 spaces per indentation level.
Limit all lines to a maximum of 79 characters.
Formulas always have line break before binary
operations
Surround top-level function and class definitions with
two blank lines. Method definitions inside a class are
surrounded by a single blank line.
Code in the core Python distribution should always
encoding in UTF-8
Imports should usually be on separate lines
Data Structure and Algorithm using Python @ Peter Lo 2019 92
Whitespace in Expressions and Statements
Avoid trailing whitespace anywhere.
Always surround these binary operators with a single
space on either side: assignment (=), augmented
assignment (+=, -= etc.), comparisons (==, <, >, !=, <>,
<=, >=, in, not in, is, is not), Booleans (and, or, not).
If operators with different priorities are used, consider
adding whitespace around the operators with the lowest
priority.
Data Structure and Algorithm using Python @ Peter Lo 2019 93
Comments
Comments should be complete sentences. The first
word should be capitalized, unless it is an identifier that
begins with a lower case letter.
Block comments generally consist of one or more
paragraphs built out of complete sentences, with each
sentence ending in a period.
Inline comments should be separated by at least two
spaces from the statement. They should start with a #
and a single space.
Data Structure and Algorithm using Python @ Peter Lo 2019 94
Naming Conventions
Never use the characters 'l', 'O', or 'I' as single character
variable names.
Identifiers used in the standard library must be ASCII
compatible
Modules should have short, all-lowercase names.
Underscores can be used in the module name if it improves
readability
Class names should normally use the CapWords convention.
Names of type variables should normally use CapWords
preferring short names: T, AnyStr, Num.
Function names should be lowercase, with words separated
by underscores as necessary to improve readability
Data Structure and Algorithm using Python @ Peter Lo 2019 95