#%% a = [ 1.5, 7.2, 10., 0.7] # déclaration d’une liste #%% len(a) # longueur de la liste #%% a[0] # premier élement de la liste #%% a[4]=6 # en dehors de la liste a#%% a.append(7.8) # ajout en fin de liste a #%% a = [1,2,3] # http://pythontutor.com/visualize.html b = a #a et b désigne la même liste b[1]=0 #Q. Est ce que a est modifié ? #%% a # Oui #%% # PASSAGE COMME PARAMETRE a = [0, 1, 2, 3] def f(l): l[3] = 67 f(a) #%% a #%% #COPIE EXPLICITE DE LISTE a = [1, 2, 3] b = a.copy() # copie de a a[0] = 42 a #%% b #%% #SLICING c=a[1:2] # a de l'élément (en pos°) 1 (inclus) juqu'à l'élément 2 (exclus) c #%% d=b[:] d #%% #PARCOURS DE LISTE a = [1.5, 7.2, 10.0, 0.7] #comment parcourir cette liste ? #%% for i in range(0,len(a)) : # ou range(len(a)) print(a[i]) #%% for element in a : # parcourir directement les élements de la liste print(element) #%% # fonction mystère def mystere(liste): compteur = 0 for i in range(len(liste)): if liste[i] >= 0: compteur = compteur + 1 return compteur #%% print(mystere([7, 35, -10, -2, -25, 50])) #%% #MATRICE MAISON m =[[0,1,2],[3,4,5],[6,7,8]] m[0][1] # element à la ligne 0 et la colonne 1 #%% #CARRE MAGIQUE m =[[4,9,2],[3,5,7],[8,1,6]] #%% def somme_ligne(m,i): s = 0 for j in range(len(m[i])): # range(len(m)) admis s = s + m[i][j] return s #%% def somme_colonne(m,j): s = 0 for i in range(len(m)): s = s + m[i][j] return s #%% def somme_diagonale(m,d): s = 0 n = len(m) if d == 0: for i in range(n): s = s + m[i][i] else: for i in range(n): s = s + m[i][n-1-i] return s #%% def est_magique(m): c = 0 for element in m[0]: c = c + element n = len(m) for i in range(n): if somme_ligne(m,i) != c: # "or" admis return False if somme_colonne(m,i) != c: return False for i in range(2): if somme_diagonale(m,i) != c: return False return True #%% est_magique(m) #%% #Initialisation matrice v = [0,1,2] m = [v,v,v] m[2][1]=-1 m #%% m =[[0,1,2],[3,4,5],[6,7,8]] #Copie ligne def copie_ligne(m,i): return m[i][:] copie_ligne(m,0) #%% #Copie colonne def copie_colonne(m,j): colonne=[] for i in range(len(m)): colonne.append(m[i][j]) return colonne copie_colonne(m,0) #%% #Opérations algébriques 2 * [1, 2, 3] + [8, 10, 12] [1, 2, 3, 1, 2, 3, 8, 10, 12] #%% #MATRICES ET NUMPY import numpy numpy.array([1, 2, 3]) #%% a=numpy.array([[1, 2], [3, 4], [5,6]]) #%% a.shape[0] # nombre de lignes #%% a.shape[1] # nombre de colonnes #%% 2 * numpy.array([1, 2, 3]) + numpy.array([8, 10, 12]) # opérations algébriques #%% #ACCES AUX ELMTS d'un tableau NUMPY b = numpy.array([1.414, 0.5, 3.14, 2.718]) b[2] #%% a = numpy.array([[ 0.19, 0.14, 0.21], [ 0.79, 0.43, 0.74], [ 0.12, 0.40, 0.30]]) a[2,1] #%% #ALIAS a[:, 1] a[0, :] #%% v = a[:, 2] v #%% v[1] = 1.0 v a #%% #SLICING v = numpy.array([-1, -2, -3, -4, -5]) v[2:4] # on ne prend que les elements entre les indices 2 (inclus) et 4 (exclu) #%% v[:3] # elements entre les indices 0 (inclus) et 3 (exclu) #%% v[2:] # elements entre les indices 2 (inclus) et fin (inclus) #%% #OPERATIONS u = numpy.array([1, 2, 3, 4]) v = numpy.array([4, 3, 2, 1]) #%% u * v #%% u / v #%% abs(u - v) #%% #PRODUIT MATRICIEL numpy.dot(u, v) w = u * v w.sum() #%% a = numpy.array([[1, 2], [3, 4]]) x = numpy.array([1, -1]) b = numpy.dot(a, x) b