lecture 1: elements of python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfpython...

38
Programming with Python IPEC Winter School 2015 B-IT Dr. Tiansi Dong & Dr. Joachim Köhler Lecture 1: Elements of Python

Upload: others

Post on 08-Aug-2020

38 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Programming with Python

IPEC Winter School 2015B-IT

Dr. Tiansi Dong & Dr. Joachim Köhler

Lecture 1: Elements of Python

Page 2: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types

● Numbers 1234,3.1324, 1+8j, 1e3

● Strings 'spam', “hello world”, b'a\x01c'

● Lists [1,[2,3],[3,'three']]

● Dictionaries {'name': 'Bush','firstname':'Geoge W.'}

● Tuples (1, 'X')

● Files mfile = open('script0.py', 'r')

● Sets x = set('abc'), x={'a', 'b', 'c'}

● Other core types Booleans, types, None

● Program unit types Functions, modules, classes

● Implementation-related types Compiled code,stack traceback

Page 3: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Strings 1

● Python strings are read-only sequences of chars.

>>>S = 'hello world!'

>>>len(S)

12

>>>S[11]

'!'

>>>S[-1]

'!'

>>>S[1:111]

'ello world!'

>>>S[:-1]

'hello world'

>>>S[-1:2]

''

>>>S.find('h')

0

>>>S.replace('o', 'OO')

hellOO wOOrld!

Page 4: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Strings 1

● Python strings are read-only sequences of chars.

>>>S

hello world!

>>>S[0]='H'

Traceback (most recentcall last):

File "<pyshell#6>",line 1, in <module>

S[0]='H'

TypeError: 'str' objectdoes not support itemassignment

>>>S = 'H' + S[1:]

'Hello world!'

>>>dir(S)

Page 5: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Strings 3

>>>S.split('o')

['Hell', 'w', 'rld!']

>>>S.upper()

HELLO WORLD!

>>>'hello %s %s' % ('world', '!')

hello world !

>>>'hello {0}{1}'.format('world','!')

hello world!

Page 6: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Strings 2

● String structure in Python

h e l l o w o r l d ! \n

0 1 2 3 4 -2 -1

[: :]

Page 7: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Strings 3

>>>help(S.replace)

help on built-in function replace:

replace(...)

S.replace(old, new[, count]) -> str

Return a copy of S with all occurrences ofsubstring old replaced by new. If the optionalargument count is given, only the first countoccurrences are replaced.

Page 8: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Strings 5

● String format

%[(name)][flags][width][.precision]typecode

+|- s|d|f|...

% - 5 d

>>>'%-5d'%12

'12 '

>>>'%5d'%12

' 12'

>>>reply = “Hello %(name)s! Your bonus is %(bonus)s”

>>>value = {'name':'Bob', 'bonus':1000}

>>>replay % value

'Hello Bob! Your bonus is 1000'

Page 9: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Strings 6

● String formatting method call

>>>template = '{0}, {1}, {2}'

>>>template.format('hello','world','!')

'hello, world, !'

>>>template = 'hello {name}, your bonus is {bonus}'

>>>template.format(name='Bob', bonus=1000)

'hello Bob, your bonus is 1000'

>>>import sys

>>>'My {1[pc]} runs {0.platform}'.format(sys, {'pc':'MAC'})

'My MAC runs darwin'

Page 10: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Strings 7

● String formatting method call

>>>'My {config[pc]} runs {sys.platform}'.format(sys=sys,config={'pc':'MAC'})

'My MAC runs darwin'

>>>'Hello {0:<8}, your bonus is {1:-=10}'.format('Bob',1000)

'Hello Bob , your bonus is ------1000'

>>> 'Hello {0:^8}, your bonus is {1:-^10}'.format('Bob',1000)

'Hello Bob , your bonus is ---1000---'

>>> 'Hello {0:>8}, your bonus is {1:->10}'.format('Bob',1000)

'Hello Bob, your bonus is ------1000'

Page 11: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: List 1

List is an important data structure in AI. It is readable, writable, and canbe nested with any object

● List is recursively defined

>>> Lst = []

>>> Lst = [1,2,3,'a','b','c']

>>> Lst[:-1]

[1,2,3,'a','b']

>>> Lst + ['hello']

>>> Lst.append('world')

>>>Lst

[1,2,3,'a','b','c','world']

Page 12: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: List 2

>>>Lst.reverse()

['world', 'c', 'b', 'a', 3, 1]

>>>Lst.sort()

Traceback (most recent call last):

File "<pyshell#43>", line 1, in <module>

Lst.sort()

TypeError: unorderable types: str() < int()

>>>L = ['c','b','a']

>>> L.sort()

>>> L

['a', 'b', 'c']

Page 13: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: List 3

● Nested list representing Matrixes or multidimensional arrays

>>>M = [[1,2,3],[4,5,6],[7,8,9]]

>>>M[1]

[4,5,6]

>>>M[1][2]

6

● List Comprehension is an easy way to construct new lists

Syntax: '[ f(x) for x in <list>]'

>>>[c*2 for c in 'hello']

['hh', 'ee', 'll', 'll', 'oo']

>>>[row[1] for row in M]

[2,5,8]

Page 14: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Tuple 1

● Tuples are read-only lists

>>>Tpl = (1,2,3,4)

>>>len(Tpl)

4

>>>Tpl[0]

1

>>>Tpl.index(4)

3

>>>Tpl0 = (1,2,3, [11,22])

>>>Tpl0[3][1]

22

Page 15: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Tuple 2

● Tuples are read-only lists

>>>Tpl0.append(4)

Traceback (most recent call last):

File "<pyshell#87>", line 1, in <module>

Tpl0.append(4)

AttributeError: 'tuple' object has no attribute'append'

Page 16: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Set 1

● A mathematical set is an unordered collection with unique elements

● A Python set is an unordered collection with unique and hashable elements, to simulate mathematical set operations

● What does hash mean in computer science?

– A mapping from something into numbers

Page 17: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Set 2

● Why Python sets only allow hashable elements?

– Set operations are expensive

– In Python, sets are mapped (hashed) to sets of numbers, so thatoperations on sets are achieved much faster.

– The pre-condition is that original sets are read-only.

Page 18: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Set 3

● Set operations in Python 2.6

>>>S0 = set('abc')

>>>S0

{'a', 'c', 'b'}

>>>S1 = set('abxyz')

>>>S1

{'a', 'b', 'y', 'x', 'z'}

>>>'a' in S0

True

>>>S0 – S1

{'c'}

Page 19: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Set 4

● Set operations in Python 2.6

>>>S2 = set('abcd')

>>>S0 < S2

True

>>>S0.intersection(S1)

{'a', 'b'}

>>>S0.union(S1)

{'a', 'c', 'b', 'y', 'x','z'}

>>> S0.remove('a')

Page 20: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Set 5

● Set operations in Python 2.6

>>> S0

{'c', 'b'}

>>> S0.remove('x')

Traceback (most recent call last):

File "<pyshell#11>", line 1, in <module>

S0.remove('x')

KeyError: 'x'

Page 21: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Set 6

● Set operations in Python 3.0

>>>{1,2,3} & {1,2}

{1,2}

>>>{1,2,3} | {3,4}

{1,2,3,4}

>>>{1} – {1}

set()

● Set comprehension

>>>{x **2 for x in [1,2,3]}

{1,9,4}

>>>{x **2 for x in {1,2,3}}

{1,9,4}

Page 22: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Dictionaries 1

● The Python Dictionary can be understood as an extension of the Pythonset, such that each set element is mapped into an object

>>>Dic1 = {'name':'Bob', 'job':'no', 'age':10}

>>>Dic2 = {'name':{'first':'Marie','last':'Curie'}, 'affiliation':'Sorbonne'}

>>>Dic1['name']

'Bob'

>>> list(Dic1.keys())

['age', 'job', 'name']

>>> Ks = list(Dic1.keys())

Page 23: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Dictionaries 2

>>> for key in Ks:

print(key, '=>', Dic1[key])

age => 10

job => no

name => Bob

Page 24: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Dictionaries 3

>>>Dic1.['address']

Traceback (most recent call last):

File "<pyshell#25>", line 1, in <module>

Dic1['address']

KeyError: 'address'

>>>Dic1.get['address', 0]

0

>>>Dic1['address'] if 'address' in D else 0

0

>>>dir(Dic1)

Page 25: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Numbers 1

● Try first:

>>> 123+222

345

>>> 2 ** 3 #2 to the power 3

8

>>> len(str(2 ** 5)) #how many digits

2

>>>import math

>>>math.pi

3.141592653589793

Page 26: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Numbers 2

● Try first:

>>>import random

>>>random.random()

0.9311179915010321

>>>dir(random)

Page 27: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Numbers 3

● Why do we introduce Python numeric types now, after we introduced strings,lists, tuples, sets, dictionaries?

● Python numeric Types

– Integers 1,2,3

– Floating-point numbers 1.0, 3.1415, 1.414, 4.0e+12

– Complex numbers 3+4j, 3.1+4.2j

– Fixed-precision decimal numbers decimal.Decimal('0.1')

– Rational fraction numbers fractions.Fraction(1,3)

– Sets {1,2,3}, {'a', 'b', 3}

– {} is not the empty set

Page 28: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Numbers 4

● Python numeric Types

– Booleans True, False True + 1, False -1

– A variety of numeric built-ins and modules,

● Pow, abs, round, int, hex, bin, ...

● math, NumPy, SciPy, random, ...

Page 29: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Numbers 5

● Python expressions

– X if Y else Z

– X or Y

– X and Y

– not X

– X in Y, X not in Y

– X is Y, X is not Y

– X < Y, X <= Y, X == Y, X > Y, X >= Y, X != Y

– X | Y, X ^ Y, X & Y

– X << Y, X >> Y

– X + Y, X – Y, X * Y, X % Y, X / Y, X // Y

– int(3.1415), int('123'), float(3), str(1234)

Page 30: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Numbers 6

● Numeric accuracy

>>>0.1+0.1+0.1-0.3

5.551115123125783e-17

>>>from fractions import Fraction

>>>Fraction(1,10)+Fraction(1,10)+Fraction(1,10)-Fraction(3,10)

Fraction(0,1)

>>>(3.1415).as_integer_ratio()

(7074029114692207, 2251799813685248)

>>>from fractions import Fraction

>>> Fraction.from_float(1.75)

Fraction(7, 4)

Page 31: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Numbers 7

● Numeric accuracy

>>> Fraction.from_float(5.4)

Fraction(3039929748475085, 562949953421312)

>>> Fraction.from_float(5.4).limit_denominator(10)

Fraction(27, 5)

>>> 5.4 + Fraction(7.4)

12.8

Page 32: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Files 1

● Files are a core type of Python, is created using the built-in open function:

>>>mfile = open('first_file.txt', 'w')

● The second parameter of is the processing mode, whose values can be'r', 'w', 'a'(open and append text to the end of the file), 'b'(binary), 't'(text),'+'(read and write), 'U'(universal newline mode )

● The default mode is 'rt' (open for text reading).

● For binary random access, the mode 'w+b' opens and truncates the fileto 0 bytes. 'r+b' opens the file without truncation.

● Basic file operations

>>>mfile.write('hello\n')

6

>>>txt = mfile.read()

Page 33: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Files 2

>>>str = mfile.read() #read whole file into a string

>>>str = mfile.read(N) #read maximum N chars

>>>str = mfile.readline() #read next line

>>>lst = mfile.readlines() #read whole file into a #list of line strings

>>>mfile.writelines(aList) #write all line strings in #a list into the file

>>>mfile.flush() #flush output buffer

>>>mfile.close()

>>>open('file0.txt', encoding='latin-1') #python 3.0

Page 34: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Types: Files 3

● Python's standard library pickle is an tool that allows as to storealmost any Python object into files directly.

>>>Dic = {'a': 123, 'b'=3.1415}>

>>>dFile=open('Dic.pk', 'wb')

>>>import pickle

>>>pickle.dump(Dic,dFile)

>>>dFile.close()

>>>dic_file=open('Dic.pk', 'rb')

>>>mDic=pickle.load(dic_file)

>>>mDic

{'a': 123, 'b'=3.1415}

>>>dic_file.close()

Page 35: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Dynamic Typing 1

● No declaration statements in Python

>>>a = 3

>>>a = 'hello world!'

● Garbage-collection is performed automatically

a 3

a hello world!

3

Page 36: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Dynamic Typing 2

● Shared references in Python

>>>a = 3

>>>b = a

● Variables are pointers to values; assignment variable a to variable b adds a new pointer b to the value pointed by a.

● Assignment introduces references, not copy

a 3

b

Page 37: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Dynamic Typing 3

● Object copy in Python

>>>L1 = [2,3,4]

>>>L3 = L1

>>>L2 = L1[:]

>>>L1[0]= 234

>>>L1

[234,3,4]

>>>L2

[2,3,4]

>>>import copy

>>>L4 = copy.copy(L1)

● == vs. is

>>> L1 == L3

True

>>> L1 is L2

False

>>> L1 is L4

False

● >>> L1 == L3

True

>>> L1 is L3

True

Page 38: Lecture 1: Elements of Python - uni-bonn.delaotzu.bit.uni-bonn.de/ipec_slides/lecture1.pdfPython Types: Strings 1 Python strings are read-only sequences of chars. >>>S hello

Python Dynamic Typing 4

● Small integers and strings arecached and reused

>>>X = 12

>>>Y = 12

>>>X is Y

True

● To get the object's referencenumber

>>>import sys

>>>sys.getrefcount(L3)

3

>>>sys.getrefcount(1)927