About Install Documentation Problems Tree Forum Save your money
via IT outsourcing!

Ukrainian HI-TECH Initiative

PythonIntroduction

From OpenOpt

Jump to: navigation, search
Python Introduction
This is a very brief and tentative preface for diving into Python to be skilled enough
for learning our software (OpenOpt/FuncDesigner/DerApproximator) documentation.

Contents

Hello World example

print('Hello World!')

Variables

a = 15 # an integer
b = 80.0 # a float number
town = 'Cherkasy' # a string
language = "Ukrainian" # you can use "" for string variables creation as well as ''
d = True # a boolean value
print((type(a),type(b),type(t),type(d))) # prints (<type 'int'>, <type 'float'>, <type 'str'>, <type 'bool'>)
isinstance(a,float), isinstance(b,float), isinstance(town,str) # (False, True, True)

Functions

def myFunc(a, b):
    return a+b
# or a shorter way for simple cases, equivalent for MATLAB's @:
myFunc = lambda a, b: a+b
# calling a function:
c = myFunc(3,4)

Tuple

d = (11,12,13,'asdf',14,15.0)
# Note - tuples are immutable types
# Common operations: 
# length of a typle
len(d)
# indexation (in Python it starts from zero)
d[0], d[1]
# slicing
d[0:2] # equals to (11, 12)
d[2:-1] # equals to (13, 'asdf', 14)
d[:2] # same as d[0:2], equals to (11, 12)
d[3:] # equals to ('asdf', 14, 15.0)
# contains
(15 in d, 100 in d) # returns (True, False)

List

List is a child class of tuple (thus all tuple methods work with lists as well); however, lists are mutable.

d = [11,12,13,'asdf',14,15.0]
# Common operations: 
d.append(16) # appends 16 to the end of the list
d + [16,17] # returns new list [11,12,13,'asdf',14,15.0, 16, 17]
d += [16,17] # in-place modification, appends [16,17] to the end of the list
d.insert(index, object) # insert object before index
d.pop([index]) # remove and return item at index (default last)
d.remove(value) # remove first occurrence of value
d.sort(cmp=None, key=None, reverse=False) # stable sort IN PLACE

Dictionary

Python dictionary is equivalent for C++ STL map

d = {1:1, 2.0:4.0, 3:9}
# other ways to define the dict:
d = dict(((1,1), (2,4.0), (3,9)))
d = dict([(1,1), (2,4.0), (3,9)])
d = dict((i, i ** 2) for a in (1,2,3)) # operation a ** b means a^b
(1 in d, 2 in d, 5 in d) # returns (True, True, False)
d[1], d[3] # returns (1, 9)
d.keys() # returns 1, 2.0, 3
d.items() # returns [(1, 1), (2, 4.0), (3, 9)]
d.update({4:16, 10:100}) # update a dict by another one
d[20] = 400 # set value 400 to key 20, add this key if it was absent
len(d) # returns number of entries in the dict

Set

# argument to class constructor should be a list or a tuple
d = set((1,2,3,'asdf'))
# Common operations: 
d.add(15) # add element 15
d3 = d1 | d2 # union
d1.update(d2) # in-place update
# or just
d1 |= d2
# some other operations: 'clear', 'copy', 'difference', 'difference_update', 
# 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 
# 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update'

NumPy array

General n-dimensional array; requires Python module NumPy installed

from numpy import *
a = array((1,2,3)) 
# also you may use python list:
a = array([1,2,3])
a = array(([1,2,3],[4,5,6]))
# or a constructor:
a = zeros(3) # array of length 3 filled by zeros
a = ones(3) # array of length 3 filled by ones
a = empty((4,5)) # uninitialized array of shape(4,5)
a = zeros((3,4)) # array of shape (3,4) filled by zeros
b, c = sin(a), cos(a) # some basic operations
d = b + c + 2*b*c + 15 - b ** c + log(c+4)/(b+c+5) + exp(c)
# getting norm
from numpy.linalg import norm
nd1, nd2, max_abs_nd = norm(d,1), norm(d,2), norm(d, inf)
# for matrix multiplication see numpy function dot

Cycles

for i in [0,1,2,3]: print('current value %d, its double value %d' % (i, 2*i))
# It is very convenient to use range/xrange in cycles:
for i in range(n): do_something # i will have sequential values 0, 1, ..., n-1
# for big n you'd better use xrange, 
# it returns iterator instead of creating whole list with possibly very big memory size
for i in xrange(n): do_something
# you can use "while" cycle as well:
elem = 100
while elem > 1.01: 
    elem /= 2.0
    print('current element value: %f' % elem)
# you can use the following construction:
result = [func(some_variables) for elem in an_iterable_object]
# some_iterable_object can be list, tuple, set, dict
# e.g.
b = 4.0
r = [(1 + (b+a)**3) for a in (1,2,3)]
# or 
s = set((1,2,3)) | set((1,2,4)) # returns set((1,2,3,4))
r = dict([(a, 1 + a**3) for a in s])

If-then-else

Common usage:

if condition1:
    # do something for case 1
elif condition2:
    # do something for case 2
elif condition3:
    # do something for case 3
#...
else:
    # do something

Shorter way for simple if-then cases, equivalent for C "?:" operator:

a = value1 if condition else value2

Some more general info

  • String concatenation
'asdf' + 'qwerty' # returns 'asdfqwerty'
  • Beware of Python ^ operation - it returns "xor" instead of "power". Use ** for power.
  • "a in S" requires
    • O(n) operations for S being list or tuple
    • O(log(n)) operations for S being set or dict
  • (To be continued)
Made by Dmitrey
Personal tools
Latest OOSuite 0.27