Documente Academic
Documente Profesional
Documente Cultură
Containere
Tablouri (Arrays)
https://docs.python.org/3/library/array.html?highlight=arrays
>>> import array
>>> a=array.array('i', [0,0,0,0,0])
>>> a
array('i', [0, 0, 0, 0, 0])
>>> a[2]
0
>>> a[2]=12
>>> a[2]
12
>>> a[22]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: array index out of range
>>> a.insert(3,111)
>>> a[3]
111
>>> a
array('i', [0, 0, 12, 111, 0, 0])
Containere
Containerele Python se disting prin modul de acces al
datelor și prin faptul că pot fi modificate sau nu
i = 0 i = 1 i = 2 i = 3 … i = len(x) - 1
Secvențe
>>> a = tuple([1,2,3,4])
>>> a
(1, 2, 3, 4)
Tuple
Tuplele pot fi adunate și multiplicate:
>>> a = 1,2,3
>>> a = a + (4,) # sau a += 4,
>>> a
(1, 2, 3, 4)
>>> a = 1,2,3
>>> a = a*2 # sau a *= 2
>>> a
(1,2,3,1,2,3)
Indici
Accesul la componente:
a[0] # Primul element
a[len(a) - 1] # Ultimul element
>>> a = (1,2)
>>> b, c = a
>>> b
1
>>> c
2
Dacă în partea stângă a asignării sunt mai multe variabile despărțite prin
virgulă, în partea dreaptă este o secvență despachetată.
>>> c = divmod(99,8)
>>> type(c)
<class 'tuple'>
>>> type(divmod(99,8))
<class 'tuple'>
Exemplu
>>> max((2,4,3,5,4,3))
5
>>> max(2,4,3,5,4,3)
5
>>> (3,4)>(1,2,3)
True
>>> (3,4)!=(1,2,3)
True
>>> tuple([2,3,2,'oo'])
(2, 3, 2, 'oo')
>>> list1= ['maths', 'che', 'phy', 'bio']
>>> tuple1=tuple(list1)
>>> tuple1
('maths', 'che', 'phy', 'bio')
Ranges (Șiruri, Serii..)
Un tip special de secvență read-only (imutabilă).
range(start, stop, step) # Elements in italics optional
start; stop; step trebuie să fie intregi.
Exemplu:
>>> a = tuple(range(5))
>>> a
(0,1,2,3,4)
>>> a = range(5)
>>> b = tuple(a)
>>> a
range(0, 5)
>>> b
(0, 1, 2, 3, 4)
>>> type(a)
<class 'range'>
Compararea secvențelor
a = (1,2,3,4)
b = (1,2,3)
4 in a # True
5 not in a # True
b in a # False
a == b # False
a > b # True
a = (2,2,2,2,2,2)
b = (6,6)
b > a # True
Funcții pe secvențe
Constructorul de liste:
a = list(some_other_container)
a = (1,2,3)
a[0] = 10 # Modificare imposibilă!
a = [1,2,3]
a[0] = 10 # OK!
>>> a = [0,1,2,3,4]
>>> b = [10,20,30]
>>> a[1:3] = b
>>> a
[0,10,20,30,3,4] # Atenție: 2 valori sunt înlocuite cu 3 valori.
>>> a = [0,1,2,3,4]
>>> b = [10,20]
>>> a[1:5] = b
>>> a
[0,10,20] # Se înlocuiesc 4 valori cu 2.
Copiere
Asignare fără copiere (a și b etichetează aceeași listă):
>>> a = [1,2,3,4,5,6]
>>> b = a
>>> a
[0, 10, 20, 30, 2, 3, 4]
>>> del(a[3:5])
>>> a
[0, 10, 20, 3, 4]
>>> a.clear()
>>> a
[]
>>> [8,5,4,6,3,4,5,6]<=[8,5,4,9]
True
>>> [8,5,4,6,3,4,5,6]==[8,5,4,9]
False
>>> len(list(range(4,19,2)))
8
>>> len([8,5,4,6,3,4,5,6])
8
>>> list((4,3,5,2,8,7))
[4, 3, 5, 2, 8, 7]
Funcții relative la liste
list.append(obj) #Appends object obj to list
list.count(obj) #Returns count of how many times
obj occurs in list
list.extend(seq) #Appends the contents of seq to list
>>> list1.index('chemistry’) 1
>>> list1.index('C#’)
ValueError: 'C#' is not in list
>>> list1.pop()
'maths'
>>> list1.pop(1)
‘Biology'
Funcții relative la liste
list.remove(obj) #Removes object obj from list
list.reverse() #Reverses objects of list in place
list.sort([func]) #Sorts objects of list, use compare func if given
>>> list1.reverse()
>>> list1
['maths', 'chemistry', 'Biology', 'physics']
>>> list1.sort()
>>> list1
[‘Biology', 'chemistry', 'maths', 'physics']
Exemple
>>> a = [1,2,3,4]
>>> b = [11,22,33]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 11, 22, 33]
>>> a.insert(3,99)
>>> a.pop(4)
4
>>> a.pop(5)
22
>>> a
[1, 2, 3, 99, 11, 33]
>>> a.insert(5,99)
>>> a.remove(99)
>>> a
[1, 2, 3, 11, 99, 33]
>>> a.reverse()
>>> a
[33, 99, 11, 3, 2, 1]
Liste 2D
O listă poate conține ca elemente alte liste care pot fi de aceeași
dimensiune sau nu.
>>> a = [[1,2,3],[10,20,30],[100,200,300]]
>>> a[1]
[10, 20, 30]
>>> a[0][2]
3
>>> a[2][0]
100
>>> a = ([1,2],[10,20])
>>> a[0][0] = 100
>>> a
([100,2],[10,20])
>>> a = [1,2,3,4,5]
>>> b = [10,20,30,40,50]
>>> c = zip(a,b)
>>> c
<zip object at 0x106b68388>
>>> d = list(c)
>>> d
[(1,10),(2,20),(3,30),(4,40),(5,50)]
Temă
• Construiti o lista formată din perechi (nume, varsta) De exemplu [(‘Ion’, 45), (‘Dana’, 32), …]
• Folosiți funcțiile referitoare la listă
• Listati sub forma unui tabel:
Nume Varsta
Ion 45
• Creati un tabel
Tara Continent Nr. Locuitori
==============================
Strings
Pe lângă secvențele imutabile tuple și range, Python mai
implementează două secvențe imutabile:
Bytes : 8 biți de 0 și 1 - adică un întreg între 0 = 00000000 și 255 =
11111111). Versiunea mutabilă este tabloul de biți.
Python nu are tipul caracter (ca alte limbaje); un caracter este un șir
de lungime 1.
Strings
Dacă un string se schimbă, cel vechi se distruge și se construiește unul nou.
Nu pot fi modificate componentele unui string (este imutabil):
>>> a = "hello world"
>>> a
'hello world'
>>> a = "hello globe"
>>> a
'hello globe'
>>> a[6]
'g'
>>> a = str(2345)
>>> a[1]
'3'
>>> a[0] = 'm'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
Strings
Caracterele unui string sunt cuprinse între:
Apostrof 'content'
Ghilimele "content"
în cazul când sunt scrise pe un singur rând, sau:
Trei apostroafe: '''content'''
Trei ghilimele: """content"""
dacă sunt scrise pe mai multe rânduri
>>> print('''Facultatea
... de
... Geografie''')
Facultatea
de
Geografie
>>> print(“Facultatea " +
... 'de '+
... "Geografie")
Facultatea de Geografie
Concatenare
Concatenarea șirurilor se realizează cu operatorul +:
Adăugare de spații:
>>> a = "hello " + "world"
>>> a = "hello" + " " + “world"
str.find(strA, start, end) Indexul poziției lui strA în string, -1 dacă nu este găsit.
str.index(strA, start, end) Același lucru cu mesaj de eroare în loc de -1.
rfind și rindex Același lucru de la sfârșit la început
https://docs.python.org/3/library/stdtypes.html#string-methods
Exemple
>>> a = "Facultatea de Geografie, Master Geomatica”
>>> a.startswith('F')
True
>>> a.startswith('F', 0, 10)
True
>>> a.startswith('G', 0, 20)
False
>>> a = "Facultatea de Geografie"
>>> a.startswith("Fac")
True
>>> a.startswith("Fac", 6, 20)
False
>>> a.startswith("cult", 2)
True
>>> a.endswith("cult", 2)
False
>>> a.endswith("cult", 0, 5 )
False
>>> a.endswith("afie")
True
>>> a.endswith("tea", 0,9)
False
>>> a.endswith("tea", 0,8)
False
>>> a.endswith("tea", 0,10)
True
Exemple
>>> a.find('a')
1
>>> a.find('a',6,20)
6
>>> a.index('a',6,20)
6
>>> a.find('+',6,20)
-1
>>> a.index('+',6,20)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
>>> x = ' Master Geomatica '
>>> x.lstrip()
'Master Geomatica '
>>> x.rstrip()
' Master Geomatica'
>>> x.strip()
'Master Geomatica'
>>> x
' Master Geomatica '
>>> x.strip('matica')
' Master Geomatica '
>>> x.strip('Geomatica')
' Master Geomatica '
>>> y = x.strip()
>>> y
'Master Geomatica'
>>> y.lstrip('Mas')
'ter Geomatica'
>>> y.rstrip('Geomatica')
'Master '
Caractere “escape”
>>> a = "Cifrele în baza 2 sunt "zero" și "unu""
File "<stdin>", line 1
a = "Cifrele în baza 2 sunt "zero" și "unu""
^
SyntaxError: invalid syntax
>>> a = "Cifrele în baza 2 sunt \"zero\" și \"unu\""
>>> a
'Cifrele în baza 2 sunt "zero" și “unu"'
Implicit print se termină cu newline (se trece la o linie nouă). Pentru altceva se folosește end
=…
În scripturi:
print ("a", end=",")
print ("b", end=",")
print ("c")
a,b,c
Print cu format
Pentru formatare există mai multe variante:
https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting
>>> a='Bob'
>>> b=75
>>> print( "{0} are: {1:10.2f} kilograme”.format(a,b)) # 0 = a 1 = b
Bob are: 75.00 kilograme
https://docs.python.org/3/tutorial/stdlib2.html#templating
Șiruri de formatare
>>> a='Bob'
>>> b=75.45378
>>> f"{a} are: {b:8.3} Kilograme."
'Bob are: 75.5 Kilograme.'
>>> f"{a} are: {b:10.3} Kilograme."
'Bob are: 75.5 Kilograme.'
>>> b
75.45378
>>> b=4.6489
>>> f"{a} are: {b:10.3} Kilograme."
'Bob are: 4.65 Kilograme.’
https://docs.python.org/3/reference/lexical_analysis.html#f-strings
str.format
https://docs.python.org/3/reference/lexical_analysis.html#f-strings
>>> a = "Bob"
>>> b = 4.6489
>>> print( "{0} are: {1:10.2f} Kilograme".format(a,b) )
Bob are: 4.65 Kilograme
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
Exemplu
for i in range(1,11):
for j in range(1,11):
k=i*j
print ("{0:4d}".format(k), end=' ')
print()
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
Mulțimi (Sets)
Mulțimea este o colecție neordonată de obiecte unice.
Tipul set este mutabil dar există și o variantă imutabilă, frozenset:
https://docs.python.org/3/library/stdtypes.html#frozenset
Constructorul:
a = {"red", "green", "blue"}
a = set(some_other_container)
>>> a = set((1,2,3,4))
>>> a
{1, 2, 3, 4}
>>> b = set(range(0,100,20))
>>> b
{0, 40, 80, 20, 60}
>>> z=set({'a','b','c'})
>>> z
{'c', 'a', 'b'}
>>> u = {'a','b','c'}
>>> u
{'c', 'a', 'b'}
Add/Remove
>>> a = {1,2,3,4}
>>> a.add(8)
>>> a >>> a.discard(10)
{1, 2, 3, 4, 8}
>>> print(a.remove(3)) >>> a.pop()
None 1
>>> a
>>> a
{1, 2, 4, 8}
>>> a.remove(10) {2, 4, 8}
Traceback (most recent call >>> a.clear()
last):
File "<stdin>", line 1, >>> a
in <module> set()
KeyError: 10
Operatori și Funcții
| or a.union(b) # Reuniune.
& or a.intersection(b) # Intersecție.
- or a.difference(b) # Diferență (elementele lui a ce nu sunt în b).
^ or a.symmetric_difference(b) # Diferența simetrică (Inversa intersecției).
x in a # x este în a ?
x not in a # x nu se află în a?
a <= b or a.issubset(b) # a este submulțime în b?
a < b # a este submulțime proprie în b?
a >= b or a.issuperset(b) # b este submulțime în a?
a > b # b este submulțime proprie în a?
len(a) # numărul de elemente
a.isdisjoint(b) # intersecție vidă?
a.copy() #se crează o copie a lui a
a = {} # Empty dictionary.
keys = (1,2,3)
values = ("Person One", "Person Two", "Person 3")
a = dict(zip(keys, values))
dict.get(key, default=None) For key key, returns value or default if key not in
dictionary
dict.has_key(key) Returns true if key in dictionary dict, false otherwise
dict.items() Returns a list of dict's (key, value) tuple pairs
dict.keys() Returns list of dictionary dict's keys
dict.update(dict2) Adds dictionary dict2's key-values pairs to dict
dict.values() Returns list of dictionary dict’s values
Temă
Construiți o agendă telefonică folosind:
O listă
Un dicționar