Introducere in Python
Introducere in Python
CURS 1
INTRODUCERE
clear() Elimină toate elementele listei #['small', 'six', 'saw', 'foxes', 'He’]
copy() Crează o copie a listei #['He', 'six', 'saw', 'small', 'foxes']
specificată #3
remove Elimină elementul specificat #['He', 'foxes', 'saw', 'sell', 'six',
'small']
()
reverse Inversează ordinea elementelor în listă
()
sort() Sortează lista
COLECTII DE DATE
LISTE METODE
FUNCTII BUILD-IN ENUMERATE
b = ['saw', 'small', 'He', 'foxes', 'six']
for i, value in enumerate(b,3):
print(i, value)
lista = list(enumerate(b,1))
print(lista)
dictionar = dict(enumerate(b,1))
print(dictionar)
'''3 saw
4 small
5 He
6 foxes
7 six
[(1, 'saw'), (2, 'small'), (3, 'He'), (4, 'foxes'), (5, 'six’)]
#Exercitiu 2
seq3 = [False, True]
print(list(zip(seq1, seq2, seq3)))
#[('one', 'cat', False), ('two', 'dogs', True)]
#Exercitiu 3
for i, (a, b) in enumerate(zip(seq1, seq2)):
print('{0}: {1}, {2}'.format(i, a, b))
'''0: one, cat
1: two, dogs
2: three, mice'''
Metoda Descriere
clear() Elimină toate elementele din dicționar
copy() Returnează o copie a dicționarului
fromkeys() Returnează un dicționar cu chei valori specificate
get() Returnează valoarea pentru o anumită cheie
items() Returnează o listă conținând un tuplu pentru fiecare pereche
cheie-valoare
keys() Returnează o listă conținând cheile dicționarului
pop() Elimină elementul având o anumită cheie specificată
popitem() Elimină ultima pereche adăugată cheie-valoare
setdefault() Returnează valoarea pentru o cheie specificată. Dacă cheia nu
există, o adaugă
update() Actualizează dicționarul cu perechile cheie-valoare specificate
values() Returnează o listă cu toate valorile dicționarului
Exemple dictionare
empty_dict = {}
print(empty_dict)
d1 = {'a' : 'some value', 'b' : [1, 2, 3, 4]}
print(d1)
#{'a': 'some value', 'b': [1, 2, 3, 4]}
d1[7] = 'an integer'
print(d1)
#{'a': 'some value', 'b': [1, 2, 3, 4], 7: 'an integer'}
print(d1['b'])
#[1, 2, 3, 4]
print('b' in d1)
#True
d1[5] = 'some value'
print(d1)
#{'a': 'some value','b': [1, 2, 3, 4],7: 'an integer',5: 'some value'}
d1['dummy'] = 'another value'
print(d1)
#{'a': 'some value','b': [1, 2, 3, 4],7: 'an integer',5: 'some value','dummy': 'another value'}
del d1[5]
print(d1)
#{'a': 'some value','b': [1, 2, 3, 4],7: 'an integer','dummy': 'another value'}
ret = d1.pop('dummy')
print(ret)
#'another value'
print(d1)
#{'a': 'some value', 'b': [1, 2, 3, 4], 7: 'an integer'}
list(d1.keys())
#['a', 'b', 7]
list(d1.values())
#['some value', [1, 2, 3, 4], 'an integer']
d1.update({'b' : 'four', 'c' : 12})
print(d1)
#{'a': 'some value', 'b': 'four', 7: 'an integer', 'c': 12}
Exemple dictionare
#Exercitiu 1
#dictionare = colectii formate din doua tupluri
col2tup=dict(zip((0,1,2,3,4),(4,3,2,1,0)))
print(col2tup)
#{0: 4, 1: 3, 2: 2, 3: 1, 4: 0}
col2tup = dict(zip(range(5), reversed(range(5))))
print(col2tup)
#{0: 4, 1: 3, 2: 2, 3: 1, 4: 0}
#Exercitiu 2
#clasificare lista de cuvinte pornind de la prima litera formand un dictionar de de liste
words = ['dig','apple', 'bat', 'corn', 'dog', 'bar', 'atom', 'book', 'cat', 'cattle']
by_letter = {}
for word in words:
letter = word[0]
if letter not in by_letter:
by_letter[letter] = [word]
else:
by_letter[letter].append(word)
print(by_letter)
#{'d': ['dig', 'dog'], 'a': ['apple', 'atom'], 'b': ['bat', 'bar', 'book'], 'c': ['corn', 'cat',
'cattle']}
print(dict(sorted(by_letter.items())))
#{'a': ['apple', 'atom'], 'b': ['bat', 'bar', 'book'], 'c': ['corn', 'cat', 'cattle'], 'd':
['dig', 'dog']}
COLECTII DE DATE - SETURI
• Seturi – colecții de date neordonate și neindexate. Nu sunt acceptate elemente identice. Seturile sunt
reprezentate prin { }. Se aseamana cu dictionarele, numai ca elementele nu sunt cheie-valoare.
Metoda Descriere
add() Adaugă un element
clear() Elimină toate elementele setului
copy() Returnează o copie a setului
difference() Returnează un set reprezentând diferența dintre două sau
mai multe seturi
difference_update() Elimină elementele dintr-un set care sunt conținute și de un
alt set specificat
discard() Elimină un element specificat
intersection() Returnează un set reprezentând intersecția a două seturi
intersection_update() Elimină elementele dintr-un set care nu sunt în alt set
isdisjoint() Arată dacă două seturi se intersectează sau nu
issubset() Arată dacă un set este inclus într-un alt set sau nu
issuperset() Arată dacă un set conține un alt set sau nu
pop() Elimină un element
remove() Elimină elementul specificat
symmetric_difference() Returnează un set cu elemente necomune celor doua seturi
symmetric_difference_up Inserează intr-un set diferențele dintre două seturi
date
Exemple seturi
print(set([2, 2, 2, 1, 3, 3]))
#{1, 2, 3}
print({2, 2, 2, 1, 3, 3})
#{1, 2, 3}
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7, 8}
print(a.union(b)); print(a | b)
#{1, 2, 3, 4, 5, 6, 7, 8}
print(a)
print(a.intersection(b)); print(a & b)
#{3, 4, 5}
print(a^b)
#{1, 2, 6, 7, 8}
print(a.symmetric_difference_update(b))
print(a)
#{1, 2, 6, 7, 8}
my_data1 = [1, 2, 3, 4]
my_data2 = [4, 5]
my_set = {tuple(my_data1), tuple(my_data2)}
print(my_set)
#{(4, 5), (1, 2, 3, 4)}
Prelucrari colectii
strings = ['a', 'as', 'bat', 'car', 'dove', 'python']
rezultat = []
for i in strings:
if len(i) > 2:
rezultat.append(i.upper())
print(rezultat)
#['BAT', 'CAR', 'DOVE', 'PYTHON']
#nested lists
nume = [['John', 'Emily', 'Michael', 'Mary', 'Steven'],['Maria', 'Juan', 'Javier', 'Natalia', 'Pilar']]
result = [name for names in nume for name in names if name.count('a') >= 2]
print(result)
#['Maria', 'Natalia’]
def f():
a = 5
b = 6
c = 7
return a, b, c
print(f())
print(list(f()))
print(set(f()))
def f():
a = 5
b = 6
c = 7
return {'a' : a, 'b' : b, 'c' : c}
print(f())
import re
states = [' Alabama ', 'Georgia!', 'Georgia', 'georgia', 'FlOrIda','south carolina## ', 'West
virginia?']
def clean_strings(strings):
result = []
for value in strings:
value = value.strip()
value = re.sub('[!#?%*]', '', value)
value = value.title()
result.append(value)
return result
print(clean_strings(states))
#['Alabama', 'Georgia', 'Georgia', 'Georgia', 'Florida', 'South Carolina', 'West Virginia']
#map(function, iterables)
x = map(add, (0, 1, 2), (2, 1, 0))
print(list(x))
print(echivalent(5))
#echivalent cu
gen = (x ** 2 for x in range(1,11))
print(list(gen))
import itertools
first_letter = lambda x: x[0]
names = ['Alan', 'Adam', 'Wes', 'Will', 'Albert', 'Steven', 'Simona', 'Ana']
names = sorted(names, key = first_letter)
for letter, names in itertools.groupby(names, first_letter):
print(letter, list(names)) # names este un generator
'''A ['Alan', 'Adam', 'Albert', 'Ana']
S ['Steven', 'Simona']
W ['Wes', 'Will']'''
STRUCTURA ALTERNATIVA (IF)
x= 10
if x < 0:
print('It is negative')
elif x == 0:
print('Equal to zero')
elif 0 < x < 5:
print('Positive but smaller than 5')
else:
print('Positive and larger than or equal to 5')
STRUCTURI REPETITIVE (FOR)
sequence = [1, 2, None, 4, None, 5]
total = 0
for value in sequence:
if value is None:
continue
total += value
print(total)
sequence = [1, 2, 0, 4, 6, 5, 2, 1]
total_until_5 = 0
for value in sequence:
if value == 5:
break
total_until_5 += value
print(total_until_5)
for i in range(4):
for j in range(4):
if j > i:
break
print((i, j))
STRUCTURI REPETITIVE (WHILE)
i = 1
while i < 6:
print(i)
if i == 3:
break
i += 1
i = 0
while i < 6:
i += 1
if i == 3:
continue
print(i)
BIBLIOGRAFIE
• Python for Data Analysis, DATA WRANGLING WITH PANDAS, NUMPY, AND
IPYTHON, Wes McKinney, 2nd edition, 2012, Ed. O’REILLY
• Data Science from Scratch, FIRST PRINCIPLES WITH PYTHON, Joel Grus,
2015, Ed. O’REILLY
• Python Data Science Handbook, ESSENTIAL TOOLS FOR WORKING WITH
DATA, Jake VanderPlas, 2016, Ed. O’REILLY
• Fundamentals of Python®: Data Structures, Kenneth A. Lambert, Cengage
Learning PTR, 2014