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

What's hot (20)

Python 3 Programming Language
Python 3 Programming LanguagePython 3 Programming Language
Python 3 Programming Language
Tahani Al-Manie
 
Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)
Pedro Rodrigues
 
Intro to Python Programming Language
Intro to Python Programming LanguageIntro to Python Programming Language
Intro to Python Programming Language
Dipankar Achinta
 
Python ppt
Python pptPython ppt
Python ppt
Mohita Pandey
 
Python Programming ppt
Python Programming pptPython Programming ppt
Python Programming ppt
ismailmrribi
 
Introduction to python programming
Introduction to python programmingIntroduction to python programming
Introduction to python programming
Srinivas Narasegouda
 
Python Basics | Python Tutorial | Edureka
Python Basics | Python Tutorial | EdurekaPython Basics | Python Tutorial | Edureka
Python Basics | Python Tutorial | Edureka
Edureka!
 
Python programming
Python  programmingPython  programming
Python programming
Ashwin Kumar Ramasamy
 
Modules and packages in python
Modules and packages in pythonModules and packages in python
Modules and packages in python
TMARAGATHAM
 
Beginning Python Programming
Beginning Python ProgrammingBeginning Python Programming
Beginning Python Programming
St. Petersburg College
 
Intro to Python
Intro to PythonIntro to Python
Intro to Python
primeteacher32
 
Python basics
Python basicsPython basics
Python basics
ssuser4e32df
 
Basics of Object Oriented Programming in Python
Basics of Object Oriented Programming in PythonBasics of Object Oriented Programming in Python
Basics of Object Oriented Programming in Python
Sujith Kumar
 
Python If Else | If Else Statement In Python | Edureka
Python If Else | If Else Statement In Python | EdurekaPython If Else | If Else Statement In Python | Edureka
Python If Else | If Else Statement In Python | Edureka
Edureka!
 
Python programming introduction
Python programming introductionPython programming introduction
Python programming introduction
Siddique Ibrahim
 
File handling in Python
File handling in PythonFile handling in Python
File handling in Python
BMS Institute of Technology and Management
 
Python cheat-sheet
Python cheat-sheetPython cheat-sheet
Python cheat-sheet
srinivasanr281952
 
Python OOPs
Python OOPsPython OOPs
Python OOPs
Binay Kumar Ray
 
Python basics
Python basicsPython basics
Python basics
RANAALIMAJEEDRAJPUT
 
Python basics
Python basicsPython basics
Python basics
Jyoti shukla
 
Python 3 Programming Language
Python 3 Programming LanguagePython 3 Programming Language
Python 3 Programming Language
Tahani Al-Manie
 
Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)
Pedro Rodrigues
 
Intro to Python Programming Language
Intro to Python Programming LanguageIntro to Python Programming Language
Intro to Python Programming Language
Dipankar Achinta
 
Python Programming ppt
Python Programming pptPython Programming ppt
Python Programming ppt
ismailmrribi
 
Introduction to python programming
Introduction to python programmingIntroduction to python programming
Introduction to python programming
Srinivas Narasegouda
 
Python Basics | Python Tutorial | Edureka
Python Basics | Python Tutorial | EdurekaPython Basics | Python Tutorial | Edureka
Python Basics | Python Tutorial | Edureka
Edureka!
 
Modules and packages in python
Modules and packages in pythonModules and packages in python
Modules and packages in python
TMARAGATHAM
 
Basics of Object Oriented Programming in Python
Basics of Object Oriented Programming in PythonBasics of Object Oriented Programming in Python
Basics of Object Oriented Programming in Python
Sujith Kumar
 
Python If Else | If Else Statement In Python | Edureka
Python If Else | If Else Statement In Python | EdurekaPython If Else | If Else Statement In Python | Edureka
Python If Else | If Else Statement In Python | Edureka
Edureka!
 
Python programming introduction
Python programming introductionPython programming introduction
Python programming introduction
Siddique Ibrahim
 

Viewers also liked (17)

Learn 90% of Python in 90 Minutes
Learn 90% of Python in 90 MinutesLearn 90% of Python in 90 Minutes
Learn 90% of Python in 90 Minutes
Matt Harrison
 
Python Presentation
Python PresentationPython Presentation
Python Presentation
Narendra Sisodiya
 
Introduction to python for Beginners
Introduction to python for Beginners Introduction to python for Beginners
Introduction to python for Beginners
Sujith Kumar
 
Python PPT
Python PPTPython PPT
Python PPT
Edureka!
 
Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)
Paige Bailey
 
Python 2 vs. Python 3
Python 2 vs. Python 3Python 2 vs. Python 3
Python 2 vs. Python 3
Pablo Enfedaque
 
Python Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutPython Tricks That You Can't Live Without
Python Tricks That You Can't Live Without
Audrey Roy
 
Advance OOP concepts in Python
Advance OOP concepts in PythonAdvance OOP concepts in Python
Advance OOP concepts in Python
Sujith Kumar
 
Python的50道陰影
Python的50道陰影Python的50道陰影
Python的50道陰影
Tim (文昌)
 
連淡水阿嬤都聽得懂的 機器學習入門 scikit-learn
連淡水阿嬤都聽得懂的機器學習入門 scikit-learn 連淡水阿嬤都聽得懂的機器學習入門 scikit-learn
連淡水阿嬤都聽得懂的 機器學習入門 scikit-learn
Cicilia Lee
 
進階主題
進階主題進階主題
進階主題
Justin Lin
 
常用內建模組
常用內建模組常用內建模組
常用內建模組
Justin Lin
 
型態與運算子
型態與運算子型態與運算子
型態與運算子
Justin Lin
 
Python 起步走
Python 起步走Python 起步走
Python 起步走
Justin Lin
 
[系列活動] Python 程式語言起步走
[系列活動] Python 程式語言起步走[系列活動] Python 程式語言起步走
[系列活動] Python 程式語言起步走
台灣資料科學年會
 
[系列活動] Python爬蟲實戰
[系列活動] Python爬蟲實戰[系列活動] Python爬蟲實戰
[系列活動] Python爬蟲實戰
台灣資料科學年會
 
[系列活動] 無所不在的自然語言處理—基礎概念、技術與工具介紹
[系列活動] 無所不在的自然語言處理—基礎概念、技術與工具介紹[系列活動] 無所不在的自然語言處理—基礎概念、技術與工具介紹
[系列活動] 無所不在的自然語言處理—基礎概念、技術與工具介紹
台灣資料科學年會
 
Learn 90% of Python in 90 Minutes
Learn 90% of Python in 90 MinutesLearn 90% of Python in 90 Minutes
Learn 90% of Python in 90 Minutes
Matt Harrison
 
Introduction to python for Beginners
Introduction to python for Beginners Introduction to python for Beginners
Introduction to python for Beginners
Sujith Kumar
 
Python PPT
Python PPTPython PPT
Python PPT
Edureka!
 
Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)
Paige Bailey
 
Python Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutPython Tricks That You Can't Live Without
Python Tricks That You Can't Live Without
Audrey Roy
 
Advance OOP concepts in Python
Advance OOP concepts in PythonAdvance OOP concepts in Python
Advance OOP concepts in Python
Sujith Kumar
 
Python的50道陰影
Python的50道陰影Python的50道陰影
Python的50道陰影
Tim (文昌)
 
連淡水阿嬤都聽得懂的 機器學習入門 scikit-learn
連淡水阿嬤都聽得懂的機器學習入門 scikit-learn 連淡水阿嬤都聽得懂的機器學習入門 scikit-learn
連淡水阿嬤都聽得懂的 機器學習入門 scikit-learn
Cicilia Lee
 
常用內建模組
常用內建模組常用內建模組
常用內建模組
Justin Lin
 
型態與運算子
型態與運算子型態與運算子
型態與運算子
Justin Lin
 
Python 起步走
Python 起步走Python 起步走
Python 起步走
Justin Lin
 
[系列活動] Python 程式語言起步走
[系列活動] Python 程式語言起步走[系列活動] Python 程式語言起步走
[系列活動] Python 程式語言起步走
台灣資料科學年會
 
[系列活動] 無所不在的自然語言處理—基礎概念、技術與工具介紹
[系列活動] 無所不在的自然語言處理—基礎概念、技術與工具介紹[系列活動] 無所不在的自然語言處理—基礎概念、技術與工具介紹
[系列活動] 無所不在的自然語言處理—基礎概念、技術與工具介紹
台灣資料科學年會
 
Ad

Similar to Introduction to Python (20)

Python001 training course_mumbai
Python001 training course_mumbaiPython001 training course_mumbai
Python001 training course_mumbai
vibrantuser
 
Sessisgytcfgggggggggggggggggggggggggggggggg
SessisgytcfggggggggggggggggggggggggggggggggSessisgytcfgggggggggggggggggggggggggggggggg
Sessisgytcfgggggggggggggggggggggggggggggggg
pawankamal3
 
python1.ppt
python1.pptpython1.ppt
python1.ppt
arivukarasi2
 
Dynamic Python
Dynamic PythonDynamic Python
Dynamic Python
Chui-Wen Chiu
 
Python for Engineers and Architects Stud
Python for Engineers and Architects StudPython for Engineers and Architects Stud
Python for Engineers and Architects Stud
RaviRamachandraR
 
Basic data types in python
Basic data types in pythonBasic data types in python
Basic data types in python
sunilchute1
 
manish python.pptx
manish python.pptxmanish python.pptx
manish python.pptx
ssuser92d141
 
ENGLISH PYTHON.ppt
ENGLISH PYTHON.pptENGLISH PYTHON.ppt
ENGLISH PYTHON.ppt
GlobalTransLogistics
 
Kavitha_python.ppt
Kavitha_python.pptKavitha_python.ppt
Kavitha_python.ppt
KavithaMuralidharan2
 
python programing 101 presentation ... Let's start
python programing 101 presentation ... Let's startpython programing 101 presentation ... Let's start
python programing 101 presentation ... Let's start
Mohsen Hefni
 
pythegggggeeeeeeeeeeeeeeeeeeeeeeeon1.ppt
pythegggggeeeeeeeeeeeeeeeeeeeeeeeon1.pptpythegggggeeeeeeeeeeeeeeeeeeeeeeeon1.ppt
pythegggggeeeeeeeeeeeeeeeeeeeeeeeon1.ppt
HamidKhemili
 
uso del lenguaje de programación python en métodos numéricos..ppt
uso del lenguaje de programación python en métodos numéricos..pptuso del lenguaje de programación python en métodos numéricos..ppt
uso del lenguaje de programación python en métodos numéricos..ppt
angelca13
 
uso del lenguaje de programación python en métodos numéricos..ppt
uso del lenguaje de programación python en métodos numéricos..pptuso del lenguaje de programación python en métodos numéricos..ppt
uso del lenguaje de programación python en métodos numéricos..ppt
angelca13
 
into python.pptinto python.pptinto python.ppt
into python.pptinto python.pptinto python.pptinto python.pptinto python.pptinto python.ppt
into python.pptinto python.pptinto python.ppt
yatakonakiran2
 
Learn Python in three hours - Python is an experiment
Learn Python in three hours - Python is an experimentLearn Python in three hours - Python is an experiment
Learn Python in three hours - Python is an experiment
Anil Yadav
 
python1.pptpppppppppppppppppppppppppppppppp
python1.pptpppppppppppppppppppppppppppppppppython1.pptpppppppppppppppppppppppppppppppp
python1.pptpppppppppppppppppppppppppppppppp
divijareddy0502
 
Python doc and Learn Python in three hours
Python doc and Learn Python in three hoursPython doc and Learn Python in three hours
Python doc and Learn Python in three hours
Anil Yadav
 
python_presentation_for students_high_school
python_presentation_for students_high_schoolpython_presentation_for students_high_school
python_presentation_for students_high_school
RakeshKumar483087
 
python introduction to user friendly.ppt
python introduction to user friendly.pptpython introduction to user friendly.ppt
python introduction to user friendly.ppt
Vinod Deenathayalan
 
python Basics of Python And Its features
python Basics of  Python And  Its featurespython Basics of  Python And  Its features
python Basics of Python And Its features
likhithareddymedapal
 
Python001 training course_mumbai
Python001 training course_mumbaiPython001 training course_mumbai
Python001 training course_mumbai
vibrantuser
 
Sessisgytcfgggggggggggggggggggggggggggggggg
SessisgytcfggggggggggggggggggggggggggggggggSessisgytcfgggggggggggggggggggggggggggggggg
Sessisgytcfgggggggggggggggggggggggggggggggg
pawankamal3
 
Python for Engineers and Architects Stud
Python for Engineers and Architects StudPython for Engineers and Architects Stud
Python for Engineers and Architects Stud
RaviRamachandraR
 
Basic data types in python
Basic data types in pythonBasic data types in python
Basic data types in python
sunilchute1
 
manish python.pptx
manish python.pptxmanish python.pptx
manish python.pptx
ssuser92d141
 
python programing 101 presentation ... Let's start
python programing 101 presentation ... Let's startpython programing 101 presentation ... Let's start
python programing 101 presentation ... Let's start
Mohsen Hefni
 
pythegggggeeeeeeeeeeeeeeeeeeeeeeeon1.ppt
pythegggggeeeeeeeeeeeeeeeeeeeeeeeon1.pptpythegggggeeeeeeeeeeeeeeeeeeeeeeeon1.ppt
pythegggggeeeeeeeeeeeeeeeeeeeeeeeon1.ppt
HamidKhemili
 
uso del lenguaje de programación python en métodos numéricos..ppt
uso del lenguaje de programación python en métodos numéricos..pptuso del lenguaje de programación python en métodos numéricos..ppt
uso del lenguaje de programación python en métodos numéricos..ppt
angelca13
 
uso del lenguaje de programación python en métodos numéricos..ppt
uso del lenguaje de programación python en métodos numéricos..pptuso del lenguaje de programación python en métodos numéricos..ppt
uso del lenguaje de programación python en métodos numéricos..ppt
angelca13
 
into python.pptinto python.pptinto python.ppt
into python.pptinto python.pptinto python.pptinto python.pptinto python.pptinto python.ppt
into python.pptinto python.pptinto python.ppt
yatakonakiran2
 
Learn Python in three hours - Python is an experiment
Learn Python in three hours - Python is an experimentLearn Python in three hours - Python is an experiment
Learn Python in three hours - Python is an experiment
Anil Yadav
 
python1.pptpppppppppppppppppppppppppppppppp
python1.pptpppppppppppppppppppppppppppppppppython1.pptpppppppppppppppppppppppppppppppp
python1.pptpppppppppppppppppppppppppppppppp
divijareddy0502
 
Python doc and Learn Python in three hours
Python doc and Learn Python in three hoursPython doc and Learn Python in three hours
Python doc and Learn Python in three hours
Anil Yadav
 
python_presentation_for students_high_school
python_presentation_for students_high_schoolpython_presentation_for students_high_school
python_presentation_for students_high_school
RakeshKumar483087
 
python introduction to user friendly.ppt
python introduction to user friendly.pptpython introduction to user friendly.ppt
python introduction to user friendly.ppt
Vinod Deenathayalan
 
python Basics of Python And Its features
python Basics of  Python And  Its featurespython Basics of  Python And  Its features
python Basics of Python And Its features
likhithareddymedapal
 
Ad

More from amiable_indian (20)

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

Recently uploaded (20)

Trends Report: Artificial Intelligence (AI)
Trends Report: Artificial Intelligence (AI)Trends Report: Artificial Intelligence (AI)
Trends Report: Artificial Intelligence (AI)
Brian Ahier
 
Extend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptxExtend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptx
hoang971
 
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptxISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
AyilurRamnath1
 
Create Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent BuilderCreate Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent Builder
DianaGray10
 
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdfBoosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Alkin Tezuysal
 
Securiport - A Border Security Company
Securiport  -  A Border Security CompanySecuriport  -  A Border Security Company
Securiport - A Border Security Company
Securiport
 
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto CertificateCybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
VICTOR MAESTRE RAMIREZ
 
Data Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any ApplicationData Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any Application
Safe Software
 
soulmaite review - Find Real AI soulmate review
soulmaite review - Find Real AI soulmate reviewsoulmaite review - Find Real AI soulmate review
soulmaite review - Find Real AI soulmate review
Soulmaite
 
IntroSlides-May-BuildWithAi-EarthEngine.pdf
IntroSlides-May-BuildWithAi-EarthEngine.pdfIntroSlides-May-BuildWithAi-EarthEngine.pdf
IntroSlides-May-BuildWithAi-EarthEngine.pdf
Luiz Carneiro
 
Domino IQ – What to Expect, First Steps and Use Cases
Domino IQ – What to Expect, First Steps and Use CasesDomino IQ – What to Expect, First Steps and Use Cases
Domino IQ – What to Expect, First Steps and Use Cases
panagenda
 
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to KnowWhat is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
SMACT Works
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.
hok12341073
 
MCP vs A2A vs ACP: Choosing the Right Protocol | Bluebash
MCP vs A2A vs ACP: Choosing the Right Protocol | BluebashMCP vs A2A vs ACP: Choosing the Right Protocol | Bluebash
MCP vs A2A vs ACP: Choosing the Right Protocol | Bluebash
Bluebash
 
Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...
Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...
Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...
Scott M. Graffius
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdfHow Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
Co-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using ProvenanceCo-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using Provenance
Paul Groth
 
The case for on-premises AI
The case for on-premises AIThe case for on-premises AI
The case for on-premises AI
Principled Technologies
 
Oracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI ProfessionalOracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI Professional
VICTOR MAESTRE RAMIREZ
 
Trends Report: Artificial Intelligence (AI)
Trends Report: Artificial Intelligence (AI)Trends Report: Artificial Intelligence (AI)
Trends Report: Artificial Intelligence (AI)
Brian Ahier
 
Extend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptxExtend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptx
hoang971
 
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptxISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
AyilurRamnath1
 
Create Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent BuilderCreate Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent Builder
DianaGray10
 
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdfBoosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Alkin Tezuysal
 
Securiport - A Border Security Company
Securiport  -  A Border Security CompanySecuriport  -  A Border Security Company
Securiport - A Border Security Company
Securiport
 
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto CertificateCybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
VICTOR MAESTRE RAMIREZ
 
Data Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any ApplicationData Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any Application
Safe Software
 
soulmaite review - Find Real AI soulmate review
soulmaite review - Find Real AI soulmate reviewsoulmaite review - Find Real AI soulmate review
soulmaite review - Find Real AI soulmate review
Soulmaite
 
IntroSlides-May-BuildWithAi-EarthEngine.pdf
IntroSlides-May-BuildWithAi-EarthEngine.pdfIntroSlides-May-BuildWithAi-EarthEngine.pdf
IntroSlides-May-BuildWithAi-EarthEngine.pdf
Luiz Carneiro
 
Domino IQ – What to Expect, First Steps and Use Cases
Domino IQ – What to Expect, First Steps and Use CasesDomino IQ – What to Expect, First Steps and Use Cases
Domino IQ – What to Expect, First Steps and Use Cases
panagenda
 
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to KnowWhat is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
SMACT Works
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.
hok12341073
 
MCP vs A2A vs ACP: Choosing the Right Protocol | Bluebash
MCP vs A2A vs ACP: Choosing the Right Protocol | BluebashMCP vs A2A vs ACP: Choosing the Right Protocol | Bluebash
MCP vs A2A vs ACP: Choosing the Right Protocol | Bluebash
Bluebash
 
Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...
Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...
Mark Zuckerberg teams up with frenemy Palmer Luckey to shape the future of XR...
Scott M. Graffius
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdfHow Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
Co-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using ProvenanceCo-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using Provenance
Paul Groth
 
Oracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI ProfessionalOracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI Professional
VICTOR MAESTRE RAMIREZ
 

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)