2014 m. liepos 7 d., pirmadienis

Python3

# print funkcijos suderinamumas tarp 2.x ir .3.x versijos

from __future__ import print_function

# string formavimas 3.x versijoje

>>> print('%s, diena , %s' %('Gera',  'Pasauli!') )
 

Gera, diena , Pasauli!

>>> print('{0}, rytas, {1}'.format('Labas', 'Pasauli!'))

Labas, rytas, Pasauli!

>>> print('Ats: ' + str(42))
 

Ats: 42

# Kintamųju priskirimo būdai

>>> a =b = c = 1
>>> a,b,c = 1,1,1
>>> a = 1; b = 1; c = 1


# Žodyno reišmių priskyrimas

>>> {reiksme:0 for reiksme in 'abc'}
{'b': 0, 'c': 0, 'a': 0}

# Pasirinkimas, su klaidos pranešimu

>>> D = {'vienas': 1, 'du': 2, 'trys': 3} 

>>> print(D.get('vienas', 'neteisingas pasirinkimas'))
1
>>> print(D.get('vienaZ', 'neteisingas pasirinkimas'))
neteisingas pasirinkimas


# If pasirinkimas su klaidos tikrinimu
 
>>> pasirinkimas = 11
>>> if pasirinkimas in D:
    print (D[pasirinkimas])
else:
    print('Neteisingas pasirinkimas')

  
Neteisingas pasirinkimas



# Tikrinimas su try

>>> try:
    print(D['pasirinkimas'])
except KeyError:
    print('neteisingas pasirinkimas')

   
neteisingas pasirinkimas


# Supaprastintas if/else išraiška

if X:
    A = Y
else:
    A = Z


# Tas pats kas 

A = Y if X else Z

>>> A = 'taip' if 'labas' else 'ne'
>>> A
'taip'
>>> A = 'taip' if '' else 'ne'
>>> A
'ne'


# Galima panaudoti žodyna, loginiame vertinime

>>> ['ne: 0', 'taip: 1'][bool('')]
'ne: 0'
>>> ['ne: 0', 'taip: 1'][bool('a')]
'taip: 1'



# Tik True reikšmių filtravimas ir sarašo

>>> L=[1,0,'test','','test3']
>>> L
[1, 0, 'test', '', 'test3']
[1, 'test', 'test3']


>>> list(filter(bool, L))
[1, 'test', 'test3']


 >>> [x for x in L if bool(x)]
[1, 'test', 'test3']


 >>> [x for x in L if x]
[1, 'test', 'test3']


# Tas pati galima atlikti su list comprehension

>>> [x for x in L if x]
[1, 'test', 'test3']



----
# Generuojamas lyginių skaičių sarašas

>>> [i for i in range(51) if i % 2 == 0]

# Tuple iteracija

>>> T = [(2,4),(6,8),(10,12)]
>>> for (x,y) in T:
    print(x,y)
  
2 4
6 8
10 12



# Žodyno iteracija, naudonat .items tuple formate

>>> D
{'b': 2, 'c': 3, 'a': 1}
>>> for key, value in D.items():
    print(key, value)
   
b 2
c 3
a 1


# Skaitymas iš dokumento po viena raide

>>> for raide in open('log.txt').read():
    print (raide, end='')


# Skaitymas iš dokumento po viena eilute

 >>> for eilute in open('log.txt').readlines():
    print (eilute, end='')


# Sarašo elementų keitimas su - for loop

>>> L
[2, 3, 4]
>>> for i in range(len(L)):
    L[i] += 1

>>> L
[3, 4, 5]

# Sarašo elementų keitimas su - while loop

>>> L = [1,2,3]
>>> i = 0
>>> while i <len(L):
    L[i] += 1
    i += 1
>>> L
[2, 3, 4]


# Sarašo elementų keitimas su list comprehension

>>> L
[2, 3, 4]
>>> [x + 1 for x in L]
[3, 4, 5]


# Dviejų sarašų reikšmių apjungimas į tuple
>>> L
[2, 3, 4]
>>> L1
['aaa', 'bbb', 'ccc', 'ddd']
>>> list(zip(L, L1))
[(2, 'aaa'), (3, 'bbb'), (4, 'ccc')]


# For ciklas naudojamas kartu su zip funkcija, kaip matome, galima atlikti aritmenius veiksmus
>>> L
[2, 3, 4]
>>> L1 = [7,8,9]
>>> for (x,y) in zip(L, L1):
    print(x, y,  '--', x+y)

   
2 7 -- 9
3 8 -- 11
4 9 -- 13


# Dviejų sarašų reikšmi sujungimas į žodyną naudojant zip ir for ciklą

>>> keys
[1, 3, 5]
>>> vals
['vienas', 'du', 'trys']


>>> D = {}
>>> for (k, v) in zip(keys, vals): D[v] = k

>>> D
{'du': 3, 'trys': 5, 'vienas': 1}

––
# Dar papraščiau tai galima atlikti iškar kuriant žodyną su dict(zip(L1,L2))

>>> D2 = dict(zip(keys, vals))
>>> keys
[1, 3, 5]
>>> vals
['vienas', 'du', 'trys']
>>> D2 = dict(zip(keys, vals))
>>> D2
{1: 'vienas', 3: 'du', 5: 'trys'}


# Dvienų sarašų sujungimas į žodyną naudojant list comprehension

>>> {k: v for (k,v) in zip(keys, vals)}
{1: 'vienas', 3: 'du', 5: 'trys'}


# Enumerate funkcija, kuri fiksuoja string buvimo vietą

>>> for (vieta, raide) in enumerate(S):
    print(raide, 'yra -', vieta, ' vietoje.')

   
z yra - 0  vietoje.
o yra - 1  vietoje.
d yra - 2  vietoje.
i yra - 3  vietoje.
s yra - 4  vietoje.





# Skaitimas iš failo su for ciklu

>>> for eilute in open('test1.py'):
    print(eilute.upper(), end='')


# f.__next__() funkcija naudojama skaityti po viena eilute 3.x, f.next() 2.x, next(nukreipimas_i_nustaityta_faila) veikia abiejose versijose

# Žodyno iteracija, kad galima būtų atlikti su sarašais ar žodynais butinai reikia priskirti iter(x)
>>> D
{'b': 2, 'a': 1, 'c': 3}

>>> I = iter(D)
>>> I
<dict_keyiterator object at 0x7f3a87561d68>

>>> next(I)
'b'
>>> next(I)
'a'
>>> next(I)
'c'
>>> next(I)


# Priešingai meta klaidos kodą

>>> next(D)
Traceback (most recent call last):
  File "<pyshell#153>", line 1, in <module>
    next(D)
TypeError: 'dict' object is not an iterator


# Kaip veikia enumerate funkcija

>>> S = 'zodis'
>>> E = enumerate(S)
>>> E
<enumerate object at 0x7f3a87564678>
>>> list(E)
[(0, 'z'), (1, 'o'), (2, 'd'), (3, 'i'), (4, 's')]
>>> next(E)
Traceback (most recent call last):
  File "<pyshell#195>", line 1, in <module>
    next(E)
StopIteration
>>> E = enumerate(S)
>>> next(E)
(0, 'z')
>>> next(E)
(1, 'o')
>>> E.__next__()
(2, 'd')



# Ieškojimas tekstiniame faile, jei pirmas simbolis atitinka raidei 'i', ta eilute atspausdinama, galima ieškoti paskutinio simbolio su x[-1]

[x.rstrip() for x in open('test1.py') if x[0] == 'i']

# Sarašų ciklą galima generuoti sutrumpinta forma, pavyzdyje kiekvienam x nariui priskirami visi y nariai.

>>> [(x, y) for x in '123' for y in 'abc']
[('1', 'a'), ('1', 'b'), ('1', 'c'), ('2', 'a'), ('2', 'b'), ('2', 'c'), ('3', 'a'), ('3', 'b'), ('3', 'c')]

# Failus galima iškart pateikti saraše, rušiuoti enumeruoti, sujungti, priskirti kintamuosius, logiškai patikrinti

sorted(open('test1.py'))
list(open('test1.py'))
tuple(open('test1.py'))
list(enumerate(open('test1.py')))
list(filter(bool, open('test1.py')))
'--'.join(open('test1.py'))
a, *b = open('test1.py')
aaa' in list(open('test1.py'))
L[:0] = [list(open('test1.py'))[0]]

>>> len(list(open('test1.py')))
8
>>> q,w,e,r,t,y,u,p = open('test1.py')

# Failo iteracija kai rezultatas žodyne

>>> set(open('test1.py')
>>> {x for x in open('test1.py')}



# Žodyno rušiavimas

>>> D
{'b': 2, 'a': 1, 'c': 3}
>>> for k in sorted(D): print(k, D[k])

a 1
b 2
c 3



#
 Kaip sužinoti python interpretatoriaus versiją?

>> import sys

>> sys.version
'2.7.3 (default, Apr 10 2012, 23:31:26)


# Kaip pažiūrėti kokie yra importuoti moduliai ir koks yra modulio turinys?

>>> dir ()
['__builtins__', '__doc__', '__name__', '__package__', 'math']
 

>>> import math
>>> dir (math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']



#  Kaip sužinoti ką daro funkcija?
>>> S
'labas'
>>> help(S.isalpha)


Strings

# Keičiami ryšiai tarp raidžių
>>> S
'Zodis'
>>> ' '.join(S)
'Z o d i s'
 

# Atskirų simbolių atvaizdavimas S[1:] nurodo S[1:len(S)]
 >>> S[1]
'o'
>>> S[1:]
'odis'




# Paieška (-1) reikia, kad tokios raidės nėra, kitu atveju atspausdina pirma raidės numeri, kuriame randama raidė.
>>> S
'Zodis'
>>> S.find('p')
-1
>>> S.find('Z')
0
>>> S.find('o')
1
>>> S.find('Zo')
0


# Simbolių keitimas


>>> S
'Zodis'

>>> S.replace('odis', 'irkles')
'Zirkles'
>>> S
'Zodis'


# Kaip atskirti pagal bendrą simbolį

>>> Skaiciai
'Vienas,du,trys,keturi'
>>> Skaiciai.split(',')
['Vienas', 'du', 'trys', 'keturi']



# Atvaizdavimas tekste
>>> '%s, eggs, and %s' % ('spam', 'SPAM!')
'spam, eggs, and SPAM!


>>> '{0}, eggs, and {1}'.format('spam', 'SPAM!')
'spam, eggs, and SPAM!'


>>> '{}, eggs, and {}'.format('spam', 'SPAM!')
'spam, eggs, and SPAM!'


 Lists

# Pridėjimas/ištraukimas iš sarašo append/pop

>>> Sarasas = ['Zeme', 2014, 'Jupiteris']
>>> Sarasas.append('Indraja')
>>> Sarasas
['Zeme', 2014, 'Jupiteris', 'Indraja']
>>> Sarasas.pop(1)
2014
>>> Sarasas
['Zeme', 'Jupiteris', 'Indraja']


# Kaip iš M sarašo ištraukti, visus pirmus narius
>>> M =[ [1,2,3], [4,5,6], [7,8,9] ]
>>> col2 = [row[0] for row in M]
>>> col2
[1, 4, 7]




# Kiekvieną narį pakelia kvadratu

>>> [row[0] ** 2 for row in M]
[1, 16, 49]