SlideShare a Scribd company logo
Introduction to Python I (revised) CSE 391 Introduction to Artificial Intelligence Fall 2006
This Set of Notes Installing & Running Python Names & Assignment Sequences: Lists, Tuples, and Strings Mutability
Python is an open source scripting language. Developed by Guido van Rossum in the early 1990s Named after Monty Python Available on eniac (Version on eniac-s outdated) Available for download from  http://www.python.org Python
Why Python for CSE-391? Textbook Code: Very Object Oriented Python much less verbose than Java AI Processing: Symbolic Python’s built-in datatypes for strings, lists, and more.  Java or C++ require the use of special classes for this. AI Processing: Statistical Python has strong numeric processing capabilities: matrix operations, etc. Suitable for probability and machine learning code.
Technical Issues Installing & Running Python
The Python Interpreter Interactive interface to Python % python Python 2.4.2 (#1, May  2 2006, 08:13:46)  [GCC 4.1.0 (SUSE Linux)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> Python interpreter evaluates inputs: >>>  3*(7+2) 27
The IDLE GUI Environment (Windows)
IDLE Development Environment Shell for interactive evaluation. Text editor with color-coding and smart indenting for creating python files. Menu commands for changing system settings and running files.  You’ll see me using IDLE in class.
Running Interactively on UNIX On Unix… %  python >>>  3+3 6 Python prompts with ‘>>>’.  To exit: In Unix, type CONTROL-D In Windows, type CONTROL-Z + Enter
Running Programs on UNIX %   python filename.py You can create python files using emacs. (There’s a special Python editing mode.) You could even make the *.py file executable and add the following text to top of the file to make it runable: #!/usr/bin/python
The Basics
A Code Sample x = 34 - 23  # A comment y = “Hello”  # Another one. z = 3.45  if z == 3.45 or y == “Hello”: x = x + 1 y = y + “ World”  # String concat. print x print y
Our Code Sample in IDLE x = 34 - 23  # A comment. y =  “Hello”   # Another one. z = 3.45  if  z == 3.45  or  y ==  “Hello” : x = x + 1 y = y +  “ World”   # String concat. print  x print  y
Enough to Understand the Code Assignment uses  =  and comparison uses  == . For numbers  + - * / %  are as expected. Special use of  +  for string concatenation. Special use of  %  for string formatting (as with printf in C) Logical operators are words ( and, or, not )  not  symbols The basic printing command is “print.” The first assignment to a variable creates it. Variable types don’t need to be declared. Python figures out the variable types on its own.
Basic Datatypes Integers (default for numbers) z = 5 / 2  # Answer is 2, integer division. Floats x = 3.456 Strings Can use “” or ‘’ to specify.  “abc”  ‘abc’   (Same thing.) Unmatched can occur within the string.  “matt’s” Use triple double-quotes for multi-line strings or strings than contain both ‘ and “ inside of them:  “““a‘b“c”””
Whitespace Whitespace is meaningful in Python: especially indentation and placement of newlines.  Use a newline to end a line of code.  Use  \  when must go to next line prematurely. No braces  { }  to mark blocks of code in Python…  Use  consistent  indentation instead.  The first line with  less  indentation is outside of the block. The first line with  more  indentation starts a nested block Often a colon appears at the start of a new block.  (E.g.  for function and class definitions.)
Comments Start comments with # – the rest of line is ignored. Can include a “documentation string” as the first line of any new function or class that you define. The development environment, debugger, and other tools use it: it’s good style to include one. def   my_function (x, y): “““ This is the docstring. This  function does blah blah blah.””” # The code would go here...
Assignment Binding a variable  in Python means setting a  name  to hold a  reference  to some  object . Assignment creates references, not copies Names in Python do not have an intrinsic type.  Objects have types. Python determines the type of the reference automatically based on what data is assigned to it. You create a name the first time it appears on the left side of an assignment expression:  x = 3 A reference is deleted via garbage collection after any names bound to it have passed out of scope.
Accessing Non-Existent Name If you try to access a name before it’s been properly created (by placing it on the left side of an assignment), you’ll get an error.  >>>  y Traceback (most recent call last): File &quot;<pyshell#16>&quot;, line 1, in -toplevel- y NameError: name ‘y' is not defined >>>  y = 3 >>>  y 3
Multiple Assignment You can also assign to multiple names at the same time.  >>>  x, y = 2, 3 >>>  x 2 >>>  y 3
Naming Rules Names are case sensitive and cannot start with a number.  They can contain letters, numbers, and underscores. bob  Bob  _bob  _2_bob_  bob_2  BoB There are some reserved words: and, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while
Understanding Reference Semantics in Python (Adapts several slides by  Guido van Rossum)
Assignment Binding a variable  in Python means setting a  name  to hold a  reference  to some  object . Assignment creates references, not copies Names in Python do not have an intrinsic type.  Objects have types. Python determines the type of the reference automatically based on what data is assigned to it. You create a name the first time it appears on the left side of an assignment expression:  x = 3 A reference is deleted via garbage collection after any names bound to it have passed out of scope.
Accessing Non-Existent Name If you try to access a name before it’s been properly created (by placing it on the left side of an assignment), you’ll get an error.  >>>  y Traceback (most recent call last): File &quot;<pyshell#16>&quot;, line 1, in -toplevel- y NameError: name ‘y' is not defined >>>  y = 3 >>>  y 3
Multiple Assignment You can also assign to multiple names at the same time.  >>>  x, y = 2, 3 >>>  x 2 >>>  y 3
Understanding Reference Semantics Assignment manipulates references x = y  does not make a copy  of y x = y makes x  reference  the object y references Very useful; but beware! Example: >>> a = [1, 2, 3] # a now references the list [1, 2, 3] >>> b = a # b now references what a references >>> a.append(4) # this  changes  the list a references  >>> print b # if we print what b references, [1, 2, 3, 4] # SURPRISE!  It has changed… Why??
Understanding Reference Semantics II There is a lot going on when we type: x = 3 First, an integer  3  is created and stored in memory A name  x  is created An  reference  to the memory location storing the  3  is then assigned to the name  x So:  When we say that the value of  x  is  3   we mean that  x  now refers to the integer  3 Type: Integer Data: 3 Name: x Ref: <address1> name list memory
Understanding Reference Semantics III The data 3 we created is of type integer.  In Python, the datatypes integer, float, and string (and tuple) are “immutable.” This doesn’t mean we can’t change the value of x, i.e.  change what x refers to  …  For example, we could increment x: >>>  x = 3 >>>  x = x + 1 >>>   print  x 4
Understanding Reference Semantics IV If we increment x, then what’s really happening is: The reference of name  x  is looked up. The value at that reference is retrieved. The 3+1 calculation occurs, producing a new data element  4  which is assigned to a fresh memory location with a new reference. The name  x  is changed to point to this new reference. The old data  3  is garbage collected if no name still refers to it. Type: Integer Data: 3 Name: x Ref: <address1>
Understanding Reference Semantics IV If we increment x, then what’s really happening is: The reference of name  x  is looked up. The value at that reference is retrieved. The 3+1 calculation occurs, producing a new data element  4  which is assigned to a fresh memory location with a new reference. The name  x  is changed to point to this new reference. The old data  3  is garbage collected if no name still refers to it. Type: Integer Data: 3 Name: x Ref: <address1> Type: Integer Data: 4
Understanding Reference Semantics IV If we increment x, then what’s really happening is: The reference of name  x  is looked up. The value at that reference is retrieved. The 3+1 calculation occurs, producing a new data element  4  which is assigned to a fresh memory location with a new reference. The name  x  is changed to point to this new reference. The old data  3  is garbage collected if no name still refers to it. Type: Integer Data: 3 Name: x Ref: <address1> Type: Integer Data: 4
Understanding Reference Semantics IV If we increment x, then what’s really happening is: The reference of name  x  is looked up. The value at that reference is retrieved. The 3+1 calculation occurs, producing a new data element  4  which is assigned to a fresh memory location with a new reference. The name  x  is changed to point to this new reference. The old data  3  is garbage collected if no name still refers to it. Name: x Ref: <address1> Type: Integer Data: 4
Assignment 1 So, for simple built-in datatypes (integers, floats, strings), assignment behaves as you would expect: >>>   x = 3   # Creates 3, name x refers to 3  >>>   y = x   # Creates name y, refers to 3. >>>   y = 4   # Creates ref for 4. Changes y. >>>  print  x   # No effect on x, still ref 3. 3
Assignment 1 So, for simple built-in datatypes (integers, floats, strings), assignment behaves as you would expect: >>>   x = 3   # Creates 3, name x refers to 3  >>>   y = x   # Creates name y, refers to 3. >>>   y = 4   # Creates ref for 4. Changes y. >>>  print  x   # No effect on x, still ref 3. 3 Type: Integer Data: 3 Name: x Ref: <address1>
Assignment 1 So, for simple built-in datatypes (integers, floats, strings), assignment behaves as you would expect: >>>   x = 3   # Creates 3, name x refers to 3  >>>   y = x   # Creates name y, refers to 3. >>>   y = 4   # Creates ref for 4. Changes y. >>>  print  x   # No effect on x, still ref 3. 3 Type: Integer Data: 3 Name: x Ref: <address1> Name: y Ref: <address1>
Assignment 1 So, for simple built-in datatypes (integers, floats, strings), assignment behaves as you would expect: >>>   x = 3   # Creates 3, name x refers to 3  >>>   y = x   # Creates name y, refers to 3. >>>   y = 4   # Creates ref for 4. Changes y. >>>  print  x   # No effect on x, still ref 3. 3 Type: Integer Data: 3 Name: x Ref: <address1> Type: Integer Data: 4 Name: y Ref: <address1>
Assignment 1 So, for simple built-in datatypes (integers, floats, strings), assignment behaves as you would expect: >>>   x = 3   # Creates 3, name x refers to 3  >>>   y = x   # Creates name y, refers to 3. >>>   y = 4   # Creates ref for 4. Changes y. >>>  print  x   # No effect on x, still ref 3. 3 Type: Integer Data: 3 Name: x Ref: <address1> Type: Integer Data: 4 Name: y Ref: <address2>
Assignment 1 So, for simple built-in datatypes (integers, floats, strings), assignment behaves as you would expect: >>>   x = 3   # Creates 3, name x refers to 3  >>>   y = x   # Creates name y, refers to 3. >>>   y = 4   # Creates ref for 4. Changes y. >>>  print  x   # No effect on x, still ref 3. 3 Type: Integer Data: 3 Name: x Ref: <address1> Type: Integer Data: 4 Name: y Ref: <address2>
Assignment 2 For other data types (lists, dictionaries, user-defined types), assignment works differently.  These datatypes are  “mutable.”   When we change these data, we do it  in place.  We don’t copy them into a new memory address each time.  If we type y=x and then modify y, both x and y are changed! We’ll talk more about “mutability” later. >>> x = 3   x = some mutable object >>> y = x   y = x >>> y = 4   make a change to y >>> print x   look at x 3   x will be changed as well immutable mutable
Why? Changing a Shared List a 1 2 3 b 4 a = [1, 2, 3] a.append(4) b = a a 1 2 3 b a 1 2 3
Our surprising example surprising no more... So now, here’s our code: >>> a = [1, 2, 3] # a now references the list [1, 2, 3] >>> b = a # b now references what a references >>> a.append(4) # this  changes  the list a references  >>> print b # if we print what b references, [1, 2, 3, 4] # SURPRISE!  It has changed…
Sequence types: Tuples, Lists, and Strings
Sequence Types Tuple A simple  immutable  ordered sequence of items Items can be of mixed types, including collection types Strings Immutable Conceptually very much like a tuple List Mutable  ordered sequence of items of mixed types
Similar Syntax All three sequence types (tuples, strings, and lists) share much of the same syntax and functionality. Key difference:  Tuples and strings are  immutable Lists are  mutable The operations shown in this section can be applied to  all  sequence types most examples will just show the operation performed on one
Sequence Types 1 Tuples are defined using parentheses (and commas). >>>  tu = (23,  ‘abc’ , 4.56, (2,3),  ‘def’ ) Lists are defined using square brackets (and commas). >>>  li = [ “abc” , 34, 4.34, 23] Strings are defined using quotes (“, ‘, or “““). >>>  st =  “Hello World” >>>  st =  ‘Hello World’ >>>  st =  “““This is a multi-line string that uses triple quotes.”””
Sequence Types 2 We can access individual members of a tuple, list, or string using square bracket “array” notation.  Note that all are 0 based…  >>>  tu[1]  # Second item in the tuple. ‘ abc’ >>>  li[1]  # Second item in the list. 34 >>>  st[1]  # Second character in string. ‘ e’
Positive and negative indices >>>  t = (23,  ‘abc’ , 4.56, (2,3),  ‘def’ ) Positive index: count from the left, starting with 0. >>>  t[1]  ‘ abc’ Negative lookup: count from right, starting with –1. >>>  t[-3]  4.56
Slicing: Return Copy of a Subset 1 >>>  t = (23,  ‘abc’ , 4.56, (2,3),  ‘def’ ) Return a copy of the container with a subset of the original members.  Start copying at the first index, and stop copying  before  the second index.  >>>  t[1:4] (‘abc’, 4.56, (2,3)) You can also use negative indices when slicing.  >>>  t[1:-1] (‘abc’, 4.56, (2,3))
Slicing: Return Copy of a Subset 2 >>>  t = (23,  ‘abc’ , 4.56, (2,3),  ‘def’ ) Omit the first index to make a copy starting from the beginning of the container. >>>  t[:2]  (23, ‘abc’) Omit the second index to make a copy starting at the first index and going to the end of the container. >>>  t[2:] (4.56, (2,3), ‘def’)
Copying the Whole Sequence To make a  copy  of an entire sequence, you can use  [:] . >>>  t[:]  (23, ‘abc’, 4.56, (2,3), ‘def’) Note the difference between these two lines for mutable sequences: >>>  list2 = list1 # 2 names refer to 1 ref # Changing one affects both >>>  list2 = list1[:] # Two independent copies, two refs
The ‘in’ Operator Boolean test whether a value is inside a container: >>>  t = [1, 2, 4, 5] >>>  3  in  t False >>>  4  in  t True >>>  4  not in  t False For strings, tests for substrings >>> a = 'abcde' >>> 'c'  in  a True >>> 'cd'  in  a True >>> 'ac'  in  a False Be careful: the  in  keyword is also used in the syntax of  for   loops  and  list comprehensions .
The + Operator The + operator produces a  new   tuple, list, or string whose value is the concatenation of its arguments. >>>  (1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) >>>  [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] >>>   “Hello”  +  “ ”  +  “World” ‘ Hello World’
The * Operator The * operator produces a  new  tuple, list, or string that “repeats” the original content. >>>  (1, 2, 3) * 3 (1, 2, 3, 1, 2, 3, 1, 2, 3) >>>  [1, 2, 3] * 3 [1, 2, 3, 1, 2, 3, 1, 2, 3] >>>   “Hello”  * 3 ‘ HelloHelloHello’
Mutability: Tuples vs. Lists
Tuples: Immutable >>>  t = (23,  ‘abc’ , 4.56, (2,3),  ‘def’ ) >>>  t[2] = 3.14 Traceback (most recent call last): File &quot;<pyshell#75>&quot;, line 1, in -toplevel- tu[2] = 3.14 TypeError: object doesn't support item assignment You can’t change a tuple.  You can make a fresh tuple and assign its reference to a previously used name. >>>  t = (23,  ‘abc’ , 3.14, (2,3),  ‘def’ )
Lists: Mutable >>>  li = [ ‘abc’ , 23, 4.34, 23] >>>  li[1] = 45  >>>  li [‘abc’, 45, 4.34, 23] We can change lists  in place.   Name  li  still points to the same memory reference when we’re done.  The mutability of lists means that  they aren’t as fast as tuples.
Operations on Lists Only 1  >>>  li = [1, 11, 3, 4, 5] >>>  li.append(‘a’) # Our first exposure to  method  syntax >>>  li [1, 11, 3, 4, 5, ‘a’] >>>  li.insert(2, ‘i’) >>> li [1, 11, ‘i’, 3, 4, 5, ‘a’]
The  extend  method vs the  +  operator.  +  creates a fresh list (with a new memory reference) extend  operates on list  li   in place. >>>  li.extend([9, 8, 7])  >>> li [1, 2, ‘i’, 3, 4, 5, ‘a’, 9, 8, 7] Confusing :  Extend takes a list as an argument.  Append takes a singleton as an argument. >>>  li.append([10, 11, 12]) >>>  li [1, 2, ‘i’, 3, 4, 5, ‘a’, 9, 8, 7, [10, 11, 12]]
Operations on Lists Only 3 >>>  li = [‘a’, ‘b’, ‘c’, ‘b’] >>>  li.index(‘b’)  # index of first occurrence 1 >>>  li.count(‘b’)  # number of occurrences 2 >>>  li.remove(‘b’)  # remove first occurrence >>>  li [‘a’, ‘c’, ‘b’]
Operations on Lists Only 4 >>>  li = [5, 2, 6, 8] >>>  li.reverse()  # reverse the list  *in place* >>>  li [8, 6, 2, 5] >>>  li.sort()  # sort the list  *in place* >>>  li [2, 5, 6, 8] >>>  li.sort(some_function)  # sort in place using user-defined comparison
Assignment & Mutability 1 Remember the consequence of assigning multiple names to a reference to the same mutable object >>>  x = 3   >>>  x = [ 1, 2, 3] >>>  y = x   >>>  y = x >>>  y = y + 1   >>>  y.reverse() >>>  print y 4 >>>  print x   >>>  print x 3   [ 3, 2, 1] immutable mutable
Tuples vs. Lists Lists slower but more powerful than tuples. Lists can be modified, and they have lots of handy operations we can perform on them. Tuples are immutable and have fewer features. To convert between tuples and lists use the list() and tuple() functions: li = list(tu) tu = tuple(li)

More Related Content

PPT
Python Pandas
ODP
Python Presentation
PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PPTX
Introduction to python for Beginners
PDF
Training report on web developing
PDF
Python Course | Python Programming | Python Tutorial | Python Training | Edureka
PPTX
Interrupts of 8085
PPT
Introduction to Python
Python Pandas
Python Presentation
Storytelling For The Web: Integrate Storytelling in your Design Process
Introduction to python for Beginners
Training report on web developing
Python Course | Python Programming | Python Tutorial | Python Training | Edureka
Interrupts of 8085
Introduction to Python

What's hot (20)

PPT
Python ppt
PPTX
Introduction to python
PPTX
Introduction to Basics of Python
PPTX
Introduction to the basics of Python programming (part 1)
PPT
Intro to Python
PPTX
Python programming
PDF
Introduction to python programming
ODP
Python Modules
PDF
Python programming : Classes objects
PPTX
Python basics
PPTX
Python Tutorial Part 1
PPTX
Python Libraries and Modules
PDF
Tkinter Python Tutorial | Python GUI Programming Using Tkinter Tutorial | Pyt...
PPTX
Python 101: Python for Absolute Beginners (PyTexas 2014)
PPSX
Modules and packages in python
PPTX
Functions in Python
PDF
Python Basics
PDF
Python Flow Control
PPTX
Python
Python ppt
Introduction to python
Introduction to Basics of Python
Introduction to the basics of Python programming (part 1)
Intro to Python
Python programming
Introduction to python programming
Python Modules
Python programming : Classes objects
Python basics
Python Tutorial Part 1
Python Libraries and Modules
Tkinter Python Tutorial | Python GUI Programming Using Tkinter Tutorial | Pyt...
Python 101: Python for Absolute Beginners (PyTexas 2014)
Modules and packages in python
Functions in Python
Python Basics
Python Flow Control
Python
Ad

Viewers also liked (15)

PDF
Learn 90% of Python in 90 Minutes
PPTX
Python PPT
PDF
Python 2 vs. Python 3
PDF
Python Tricks That You Can't Live Without
PPTX
Basics of Object Oriented Programming in Python
PPTX
Advance OOP concepts in Python
PDF
Python的50道陰影
PPTX
連淡水阿嬤都聽得懂的 機器學習入門 scikit-learn
PDF
進階主題
PDF
常用內建模組
PDF
型態與運算子
PDF
Python 起步走
PDF
[系列活動] Python 程式語言起步走
PDF
[系列活動] Python爬蟲實戰
PDF
[系列活動] 無所不在的自然語言處理—基礎概念、技術與工具介紹
Learn 90% of Python in 90 Minutes
Python PPT
Python 2 vs. Python 3
Python Tricks That You Can't Live Without
Basics of Object Oriented Programming in Python
Advance OOP concepts in Python
Python的50道陰影
連淡水阿嬤都聽得懂的 機器學習入門 scikit-learn
進階主題
常用內建模組
型態與運算子
Python 起步走
[系列活動] Python 程式語言起步走
[系列活動] Python爬蟲實戰
[系列活動] 無所不在的自然語言處理—基礎概念、技術與工具介紹
Ad

Similar to Introduction to Python (20)

PPT
Python001 training course_mumbai
PDF
Python cheat-sheet
PDF
Sessisgytcfgggggggggggggggggggggggggggggggg
PPT
python1.ppt
ODP
Dynamic Python
PPT
Python for Engineers and Architects Stud
PPTX
Basic data types in python
PPTX
manish python.pptx
PPT
ENGLISH PYTHON.ppt
PPT
Kavitha_python.ppt
PPT
pythegggggeeeeeeeeeeeeeeeeeeeeeeeon1.ppt
PPT
uso del lenguaje de programación python en métodos numéricos..ppt
PPT
Learn Python in three hours - Python is an experiment
PPT
python1.pptpppppppppppppppppppppppppppppppp
PPT
python_presentation_for students_high_school
PPT
python programing 101 presentation ... Let's start
PPT
uso del lenguaje de programación python en métodos numéricos..ppt
PPT
into python.pptinto python.pptinto python.ppt
PPT
Python doc and Learn Python in three hours
PPT
python Basics of Python And Its features
Python001 training course_mumbai
Python cheat-sheet
Sessisgytcfgggggggggggggggggggggggggggggggg
python1.ppt
Dynamic Python
Python for Engineers and Architects Stud
Basic data types in python
manish python.pptx
ENGLISH PYTHON.ppt
Kavitha_python.ppt
pythegggggeeeeeeeeeeeeeeeeeeeeeeeon1.ppt
uso del lenguaje de programación python en métodos numéricos..ppt
Learn Python in three hours - Python is an experiment
python1.pptpppppppppppppppppppppppppppppppp
python_presentation_for students_high_school
python programing 101 presentation ... Let's start
uso del lenguaje de programación python en métodos numéricos..ppt
into python.pptinto python.pptinto python.ppt
Python doc and Learn Python in three hours
python Basics of Python And Its features

More from amiable_indian (20)

PDF
Phishing As Tragedy of the Commons
PDF
Cisco IOS Attack & Defense - The State of the Art
PDF
Secrets of Top Pentesters
PPS
Workshop on Wireless Security
PDF
Insecure Implementation of Security Best Practices: of hashing, CAPTCHA's and...
PPS
Workshop on BackTrack live CD
PPS
Reverse Engineering for exploit writers
PPS
State of Cyber Law in India
PPS
AntiSpam - Understanding the good, the bad and the ugly
PPS
Reverse Engineering v/s Secure Coding
PPS
Network Vulnerability Assessments: Lessons Learned
PPS
Economic offenses through Credit Card Frauds Dissected
PPS
Immune IT: Moving from Security to Immunity
PPS
Reverse Engineering for exploit writers
PPS
Hacking Client Side Insecurities
PDF
Web Exploit Finder Presentation
PPT
Network Security Data Visualization
PPT
Enhancing Computer Security via End-to-End Communication Visualization
PDF
Top Network Vulnerabilities Over Time
PDF
What are the Business Security Metrics?
Phishing As Tragedy of the Commons
Cisco IOS Attack & Defense - The State of the Art
Secrets of Top Pentesters
Workshop on Wireless Security
Insecure Implementation of Security Best Practices: of hashing, CAPTCHA's and...
Workshop on BackTrack live CD
Reverse Engineering for exploit writers
State of Cyber Law in India
AntiSpam - Understanding the good, the bad and the ugly
Reverse Engineering v/s Secure Coding
Network Vulnerability Assessments: Lessons Learned
Economic offenses through Credit Card Frauds Dissected
Immune IT: Moving from Security to Immunity
Reverse Engineering for exploit writers
Hacking Client Side Insecurities
Web Exploit Finder Presentation
Network Security Data Visualization
Enhancing Computer Security via End-to-End Communication Visualization
Top Network Vulnerabilities Over Time
What are the Business Security Metrics?

Recently uploaded (20)

PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPT
Teaching material agriculture food technology
PDF
Electronic commerce courselecture one. Pdf
PDF
cuic standard and advanced reporting.pdf
PDF
Approach and Philosophy of On baking technology
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Big Data Technologies - Introduction.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
KodekX | Application Modernization Development
NewMind AI Monthly Chronicles - July 2025
MYSQL Presentation for SQL database connectivity
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
CIFDAQ's Market Insight: SEC Turns Pro Crypto
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
GamePlan Trading System Review: Professional Trader's Honest Take
Diabetes mellitus diagnosis method based random forest with bat algorithm
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
Dropbox Q2 2025 Financial Results & Investor Presentation
Teaching material agriculture food technology
Electronic commerce courselecture one. Pdf
cuic standard and advanced reporting.pdf
Approach and Philosophy of On baking technology
Review of recent advances in non-invasive hemoglobin estimation
Big Data Technologies - Introduction.pptx
The AUB Centre for AI in Media Proposal.docx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
KodekX | Application Modernization Development

Introduction to Python

  • 1. Introduction to Python I (revised) CSE 391 Introduction to Artificial Intelligence Fall 2006
  • 2. This Set of Notes Installing & Running Python Names & Assignment Sequences: Lists, Tuples, and Strings Mutability
  • 3. Python is an open source scripting language. Developed by Guido van Rossum in the early 1990s Named after Monty Python Available on eniac (Version on eniac-s outdated) Available for download from http://www.python.org Python
  • 4. Why Python for CSE-391? Textbook Code: Very Object Oriented Python much less verbose than Java AI Processing: Symbolic Python’s built-in datatypes for strings, lists, and more. Java or C++ require the use of special classes for this. AI Processing: Statistical Python has strong numeric processing capabilities: matrix operations, etc. Suitable for probability and machine learning code.
  • 5. Technical Issues Installing & Running Python
  • 6. The Python Interpreter Interactive interface to Python % python Python 2.4.2 (#1, May 2 2006, 08:13:46) [GCC 4.1.0 (SUSE Linux)] on linux2 Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information. >>> Python interpreter evaluates inputs: >>> 3*(7+2) 27
  • 7. The IDLE GUI Environment (Windows)
  • 8. IDLE Development Environment Shell for interactive evaluation. Text editor with color-coding and smart indenting for creating python files. Menu commands for changing system settings and running files. You’ll see me using IDLE in class.
  • 9. Running Interactively on UNIX On Unix… % python >>> 3+3 6 Python prompts with ‘>>>’. To exit: In Unix, type CONTROL-D In Windows, type CONTROL-Z + Enter
  • 10. Running Programs on UNIX % python filename.py You can create python files using emacs. (There’s a special Python editing mode.) You could even make the *.py file executable and add the following text to top of the file to make it runable: #!/usr/bin/python
  • 12. A Code Sample x = 34 - 23 # A comment y = “Hello” # Another one. z = 3.45 if z == 3.45 or y == “Hello”: x = x + 1 y = y + “ World” # String concat. print x print y
  • 13. Our Code Sample in IDLE x = 34 - 23 # A comment. y = “Hello” # Another one. z = 3.45 if z == 3.45 or y == “Hello” : x = x + 1 y = y + “ World” # String concat. print x print y
  • 14. Enough to Understand the Code Assignment uses = and comparison uses == . For numbers + - * / % are as expected. Special use of + for string concatenation. Special use of % for string formatting (as with printf in C) Logical operators are words ( and, or, not ) not symbols The basic printing command is “print.” The first assignment to a variable creates it. Variable types don’t need to be declared. Python figures out the variable types on its own.
  • 15. Basic Datatypes Integers (default for numbers) z = 5 / 2 # Answer is 2, integer division. Floats x = 3.456 Strings Can use “” or ‘’ to specify. “abc” ‘abc’ (Same thing.) Unmatched can occur within the string. “matt’s” Use triple double-quotes for multi-line strings or strings than contain both ‘ and “ inside of them: “““a‘b“c”””
  • 16. Whitespace Whitespace is meaningful in Python: especially indentation and placement of newlines. Use a newline to end a line of code. Use \ when must go to next line prematurely. No braces { } to mark blocks of code in Python… Use consistent indentation instead. The first line with less indentation is outside of the block. The first line with more indentation starts a nested block Often a colon appears at the start of a new block. (E.g. for function and class definitions.)
  • 17. Comments Start comments with # – the rest of line is ignored. Can include a “documentation string” as the first line of any new function or class that you define. The development environment, debugger, and other tools use it: it’s good style to include one. def my_function (x, y): “““ This is the docstring. This function does blah blah blah.””” # The code would go here...
  • 18. Assignment Binding a variable in Python means setting a name to hold a reference to some object . Assignment creates references, not copies Names in Python do not have an intrinsic type. Objects have types. Python determines the type of the reference automatically based on what data is assigned to it. You create a name the first time it appears on the left side of an assignment expression: x = 3 A reference is deleted via garbage collection after any names bound to it have passed out of scope.
  • 19. Accessing Non-Existent Name If you try to access a name before it’s been properly created (by placing it on the left side of an assignment), you’ll get an error. >>> y Traceback (most recent call last): File &quot;<pyshell#16>&quot;, line 1, in -toplevel- y NameError: name ‘y' is not defined >>> y = 3 >>> y 3
  • 20. Multiple Assignment You can also assign to multiple names at the same time. >>> x, y = 2, 3 >>> x 2 >>> y 3
  • 21. Naming Rules Names are case sensitive and cannot start with a number. They can contain letters, numbers, and underscores. bob Bob _bob _2_bob_ bob_2 BoB There are some reserved words: and, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while
  • 22. Understanding Reference Semantics in Python (Adapts several slides by Guido van Rossum)
  • 23. Assignment Binding a variable in Python means setting a name to hold a reference to some object . Assignment creates references, not copies Names in Python do not have an intrinsic type. Objects have types. Python determines the type of the reference automatically based on what data is assigned to it. You create a name the first time it appears on the left side of an assignment expression: x = 3 A reference is deleted via garbage collection after any names bound to it have passed out of scope.
  • 24. Accessing Non-Existent Name If you try to access a name before it’s been properly created (by placing it on the left side of an assignment), you’ll get an error. >>> y Traceback (most recent call last): File &quot;<pyshell#16>&quot;, line 1, in -toplevel- y NameError: name ‘y' is not defined >>> y = 3 >>> y 3
  • 25. Multiple Assignment You can also assign to multiple names at the same time. >>> x, y = 2, 3 >>> x 2 >>> y 3
  • 26. Understanding Reference Semantics Assignment manipulates references x = y does not make a copy of y x = y makes x reference the object y references Very useful; but beware! Example: >>> a = [1, 2, 3] # a now references the list [1, 2, 3] >>> b = a # b now references what a references >>> a.append(4) # this changes the list a references >>> print b # if we print what b references, [1, 2, 3, 4] # SURPRISE! It has changed… Why??
  • 27. Understanding Reference Semantics II There is a lot going on when we type: x = 3 First, an integer 3 is created and stored in memory A name x is created An reference to the memory location storing the 3 is then assigned to the name x So: When we say that the value of x is 3 we mean that x now refers to the integer 3 Type: Integer Data: 3 Name: x Ref: <address1> name list memory
  • 28. Understanding Reference Semantics III The data 3 we created is of type integer. In Python, the datatypes integer, float, and string (and tuple) are “immutable.” This doesn’t mean we can’t change the value of x, i.e. change what x refers to … For example, we could increment x: >>> x = 3 >>> x = x + 1 >>> print x 4
  • 29. Understanding Reference Semantics IV If we increment x, then what’s really happening is: The reference of name x is looked up. The value at that reference is retrieved. The 3+1 calculation occurs, producing a new data element 4 which is assigned to a fresh memory location with a new reference. The name x is changed to point to this new reference. The old data 3 is garbage collected if no name still refers to it. Type: Integer Data: 3 Name: x Ref: <address1>
  • 30. Understanding Reference Semantics IV If we increment x, then what’s really happening is: The reference of name x is looked up. The value at that reference is retrieved. The 3+1 calculation occurs, producing a new data element 4 which is assigned to a fresh memory location with a new reference. The name x is changed to point to this new reference. The old data 3 is garbage collected if no name still refers to it. Type: Integer Data: 3 Name: x Ref: <address1> Type: Integer Data: 4
  • 31. Understanding Reference Semantics IV If we increment x, then what’s really happening is: The reference of name x is looked up. The value at that reference is retrieved. The 3+1 calculation occurs, producing a new data element 4 which is assigned to a fresh memory location with a new reference. The name x is changed to point to this new reference. The old data 3 is garbage collected if no name still refers to it. Type: Integer Data: 3 Name: x Ref: <address1> Type: Integer Data: 4
  • 32. Understanding Reference Semantics IV If we increment x, then what’s really happening is: The reference of name x is looked up. The value at that reference is retrieved. The 3+1 calculation occurs, producing a new data element 4 which is assigned to a fresh memory location with a new reference. The name x is changed to point to this new reference. The old data 3 is garbage collected if no name still refers to it. Name: x Ref: <address1> Type: Integer Data: 4
  • 33. Assignment 1 So, for simple built-in datatypes (integers, floats, strings), assignment behaves as you would expect: >>> x = 3 # Creates 3, name x refers to 3 >>> y = x # Creates name y, refers to 3. >>> y = 4 # Creates ref for 4. Changes y. >>> print x # No effect on x, still ref 3. 3
  • 34. Assignment 1 So, for simple built-in datatypes (integers, floats, strings), assignment behaves as you would expect: >>> x = 3 # Creates 3, name x refers to 3 >>> y = x # Creates name y, refers to 3. >>> y = 4 # Creates ref for 4. Changes y. >>> print x # No effect on x, still ref 3. 3 Type: Integer Data: 3 Name: x Ref: <address1>
  • 35. Assignment 1 So, for simple built-in datatypes (integers, floats, strings), assignment behaves as you would expect: >>> x = 3 # Creates 3, name x refers to 3 >>> y = x # Creates name y, refers to 3. >>> y = 4 # Creates ref for 4. Changes y. >>> print x # No effect on x, still ref 3. 3 Type: Integer Data: 3 Name: x Ref: <address1> Name: y Ref: <address1>
  • 36. Assignment 1 So, for simple built-in datatypes (integers, floats, strings), assignment behaves as you would expect: >>> x = 3 # Creates 3, name x refers to 3 >>> y = x # Creates name y, refers to 3. >>> y = 4 # Creates ref for 4. Changes y. >>> print x # No effect on x, still ref 3. 3 Type: Integer Data: 3 Name: x Ref: <address1> Type: Integer Data: 4 Name: y Ref: <address1>
  • 37. Assignment 1 So, for simple built-in datatypes (integers, floats, strings), assignment behaves as you would expect: >>> x = 3 # Creates 3, name x refers to 3 >>> y = x # Creates name y, refers to 3. >>> y = 4 # Creates ref for 4. Changes y. >>> print x # No effect on x, still ref 3. 3 Type: Integer Data: 3 Name: x Ref: <address1> Type: Integer Data: 4 Name: y Ref: <address2>
  • 38. Assignment 1 So, for simple built-in datatypes (integers, floats, strings), assignment behaves as you would expect: >>> x = 3 # Creates 3, name x refers to 3 >>> y = x # Creates name y, refers to 3. >>> y = 4 # Creates ref for 4. Changes y. >>> print x # No effect on x, still ref 3. 3 Type: Integer Data: 3 Name: x Ref: <address1> Type: Integer Data: 4 Name: y Ref: <address2>
  • 39. Assignment 2 For other data types (lists, dictionaries, user-defined types), assignment works differently. These datatypes are “mutable.” When we change these data, we do it in place. We don’t copy them into a new memory address each time. If we type y=x and then modify y, both x and y are changed! We’ll talk more about “mutability” later. >>> x = 3 x = some mutable object >>> y = x y = x >>> y = 4 make a change to y >>> print x look at x 3 x will be changed as well immutable mutable
  • 40. Why? Changing a Shared List a 1 2 3 b 4 a = [1, 2, 3] a.append(4) b = a a 1 2 3 b a 1 2 3
  • 41. Our surprising example surprising no more... So now, here’s our code: >>> a = [1, 2, 3] # a now references the list [1, 2, 3] >>> b = a # b now references what a references >>> a.append(4) # this changes the list a references >>> print b # if we print what b references, [1, 2, 3, 4] # SURPRISE! It has changed…
  • 42. Sequence types: Tuples, Lists, and Strings
  • 43. Sequence Types Tuple A simple immutable ordered sequence of items Items can be of mixed types, including collection types Strings Immutable Conceptually very much like a tuple List Mutable ordered sequence of items of mixed types
  • 44. Similar Syntax All three sequence types (tuples, strings, and lists) share much of the same syntax and functionality. Key difference: Tuples and strings are immutable Lists are mutable The operations shown in this section can be applied to all sequence types most examples will just show the operation performed on one
  • 45. Sequence Types 1 Tuples are defined using parentheses (and commas). >>> tu = (23, ‘abc’ , 4.56, (2,3), ‘def’ ) Lists are defined using square brackets (and commas). >>> li = [ “abc” , 34, 4.34, 23] Strings are defined using quotes (“, ‘, or “““). >>> st = “Hello World” >>> st = ‘Hello World’ >>> st = “““This is a multi-line string that uses triple quotes.”””
  • 46. Sequence Types 2 We can access individual members of a tuple, list, or string using square bracket “array” notation. Note that all are 0 based… >>> tu[1] # Second item in the tuple. ‘ abc’ >>> li[1] # Second item in the list. 34 >>> st[1] # Second character in string. ‘ e’
  • 47. Positive and negative indices >>> t = (23, ‘abc’ , 4.56, (2,3), ‘def’ ) Positive index: count from the left, starting with 0. >>> t[1] ‘ abc’ Negative lookup: count from right, starting with –1. >>> t[-3] 4.56
  • 48. Slicing: Return Copy of a Subset 1 >>> t = (23, ‘abc’ , 4.56, (2,3), ‘def’ ) Return a copy of the container with a subset of the original members. Start copying at the first index, and stop copying before the second index. >>> t[1:4] (‘abc’, 4.56, (2,3)) You can also use negative indices when slicing. >>> t[1:-1] (‘abc’, 4.56, (2,3))
  • 49. Slicing: Return Copy of a Subset 2 >>> t = (23, ‘abc’ , 4.56, (2,3), ‘def’ ) Omit the first index to make a copy starting from the beginning of the container. >>> t[:2] (23, ‘abc’) Omit the second index to make a copy starting at the first index and going to the end of the container. >>> t[2:] (4.56, (2,3), ‘def’)
  • 50. Copying the Whole Sequence To make a copy of an entire sequence, you can use [:] . >>> t[:] (23, ‘abc’, 4.56, (2,3), ‘def’) Note the difference between these two lines for mutable sequences: >>> list2 = list1 # 2 names refer to 1 ref # Changing one affects both >>> list2 = list1[:] # Two independent copies, two refs
  • 51. The ‘in’ Operator Boolean test whether a value is inside a container: >>> t = [1, 2, 4, 5] >>> 3 in t False >>> 4 in t True >>> 4 not in t False For strings, tests for substrings >>> a = 'abcde' >>> 'c' in a True >>> 'cd' in a True >>> 'ac' in a False Be careful: the in keyword is also used in the syntax of for loops and list comprehensions .
  • 52. The + Operator The + operator produces a new tuple, list, or string whose value is the concatenation of its arguments. >>> (1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) >>> [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] >>> “Hello” + “ ” + “World” ‘ Hello World’
  • 53. The * Operator The * operator produces a new tuple, list, or string that “repeats” the original content. >>> (1, 2, 3) * 3 (1, 2, 3, 1, 2, 3, 1, 2, 3) >>> [1, 2, 3] * 3 [1, 2, 3, 1, 2, 3, 1, 2, 3] >>> “Hello” * 3 ‘ HelloHelloHello’
  • 55. Tuples: Immutable >>> t = (23, ‘abc’ , 4.56, (2,3), ‘def’ ) >>> t[2] = 3.14 Traceback (most recent call last): File &quot;<pyshell#75>&quot;, line 1, in -toplevel- tu[2] = 3.14 TypeError: object doesn't support item assignment You can’t change a tuple. You can make a fresh tuple and assign its reference to a previously used name. >>> t = (23, ‘abc’ , 3.14, (2,3), ‘def’ )
  • 56. Lists: Mutable >>> li = [ ‘abc’ , 23, 4.34, 23] >>> li[1] = 45 >>> li [‘abc’, 45, 4.34, 23] We can change lists in place. Name li still points to the same memory reference when we’re done. The mutability of lists means that they aren’t as fast as tuples.
  • 57. Operations on Lists Only 1 >>> li = [1, 11, 3, 4, 5] >>> li.append(‘a’) # Our first exposure to method syntax >>> li [1, 11, 3, 4, 5, ‘a’] >>> li.insert(2, ‘i’) >>> li [1, 11, ‘i’, 3, 4, 5, ‘a’]
  • 58. The extend method vs the + operator. + creates a fresh list (with a new memory reference) extend operates on list li in place. >>> li.extend([9, 8, 7]) >>> li [1, 2, ‘i’, 3, 4, 5, ‘a’, 9, 8, 7] Confusing : Extend takes a list as an argument. Append takes a singleton as an argument. >>> li.append([10, 11, 12]) >>> li [1, 2, ‘i’, 3, 4, 5, ‘a’, 9, 8, 7, [10, 11, 12]]
  • 59. Operations on Lists Only 3 >>> li = [‘a’, ‘b’, ‘c’, ‘b’] >>> li.index(‘b’) # index of first occurrence 1 >>> li.count(‘b’) # number of occurrences 2 >>> li.remove(‘b’) # remove first occurrence >>> li [‘a’, ‘c’, ‘b’]
  • 60. Operations on Lists Only 4 >>> li = [5, 2, 6, 8] >>> li.reverse() # reverse the list *in place* >>> li [8, 6, 2, 5] >>> li.sort() # sort the list *in place* >>> li [2, 5, 6, 8] >>> li.sort(some_function) # sort in place using user-defined comparison
  • 61. Assignment & Mutability 1 Remember the consequence of assigning multiple names to a reference to the same mutable object >>> x = 3 >>> x = [ 1, 2, 3] >>> y = x >>> y = x >>> y = y + 1 >>> y.reverse() >>> print y 4 >>> print x >>> print x 3 [ 3, 2, 1] immutable mutable
  • 62. Tuples vs. Lists Lists slower but more powerful than tuples. Lists can be modified, and they have lots of handy operations we can perform on them. Tuples are immutable and have fewer features. To convert between tuples and lists use the list() and tuple() functions: li = list(tu) tu = tuple(li)