# 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]