Tableau
Un tableau est une séquence mutable.
type list en Python
Une liste en Python est une séquence mutable de longueur variable.
On peut appliquer aux listes toutes les méthodes, fonctions et opérations des tuples.
une liste est définie à l'aide de crochets.
Pour initialiser en mémoire une liste vide on écrira : l=[]
Tester les exemples suivants :
liste=[5,4,2,8,"moto"]
liste.append(35) # Ajout d'un élément à la fin de la liste
print(liste) # print est utilisée à des fins d'observation de code
liste[2]= 5 # Modification de l'élément d'indice 2
print(liste)
# reprendre les exemples du dessus avec un tuple
tup=(1,4,9,7,"moto",4.5)
# Vous allez rencontrer des messages d'erreur
La méthode append
permet d'ajouter à la fin d'une liste existante un élément. On écrira :
l.append(element_a_ajouter)
liste=[3,8,"mot",True]
liste2=[] # Création d'une liste vide
liste2.append(4)
# Afficher la liste2
liste=[3,8,"mot",True]
liste1=[2*x for x in range(10)]
liste2=[2*x+1 for x in range(10)]
liste3=[x**2 for x in range(10)]
import math
liste4=[math.sqrt(x) for x in liste3]
# Afficher les différentes listes
Dans cet exercice, vous devez écrire deux scripts Python qui créent la liste des entiers de 0 à 10000 de deux méthodes différentes :
Tableaux et fonctions
Tester les exemples suivants :
def test(a :list)->list :
return [x**2 for x in a if x>0],[x for x in a if x>10]
a=[-4,-3,-2,0,1,5,9,11]
Opérations/méthodes | Description |
Méthodes et opérations communes aux listes et tuples. | |
x in s |
Renvoie True si un élément s est égale à x, False sinon |
x not in s |
Renvoie True si aucun un élément de s n'est égale à x, False sinon |
len(s) |
Renvoie le nombre d'éléments de s |
s == s1 |
Renvoie True si s et s1 sont de même type, ont la même longueur,et ont des éléments égaux deux à deux. |
s[i] |
Renvoie l'élément d'indice i de s. Le premier élément a pour indice 0. |
s[i:j] |
Renvoie une partie de l'indice i à j non inclus |
s.index(x) |
Renvoie l'indice de la première apparition de x dans s |
s.count(x) |
Renvoie le nombre d'apparitions de x dans s |
s+ t |
Renvoie une nouvelle séquence concaténation de s et t. |
n*t |
Renvoie une nouvelle séquence composée de la concaténation de t avec lui même n fois. |
Méthodes et opérations applicables aux listes (mais pas aux tuples). | |
s.append(x) |
Ajoute l'élément x à la fin de la liste s. |
s[i] = x |
Modifie la liste et affecte la valeur x à la case d'indice i. Attention, cette case doit exister. |
s.insert(i,v) |
Insère l'élément x dans s à l'indice i . Cette méthode décale les indices suivants. |
s.remove(x) |
Supprime de la liste le premier élément dont la valeur est égale à x |
s.pop(i) |
Enlève de la liste l'élément à la position i et renvoie sa valeur. En l'absence de i, c'est le dernier élément qui est supprimé et renvoyé |
s.sort() |
Modifie la liste s en la triant |
s.reverse() |
Modifie la liste en inversant l'ordre des éléments de s |
# -*- coding: utf-8 -*-
import random
liste=[random.randint(1,6) for i in range(1000)] # Comprendre la construction de cette liste
Ecrire un script Python qui renvoie une liste contenant le nombre de 1,2,3,4,5 et 6. (on utilisera la méthode count
.)
Ecrire une fonction "count" sans "count"
compter(element,liste)
qui a pour arguments un entier (element) et une liste d'entiers (liste) qui renvoie le nombre d'occurrence de élément dans liste.Les éléments d'un tableau peuvent être également un tableau. Ce type d'objet rappelle un objet mathématiques que vous verrez plus tard qui s'appelle une matrice. Cet objet est utilisé dans de nombreux domaines, notamment dans le traitement des images. Une image est une matrice de pixels.
Matrices
On appelle matrice un tableau de tableaux dont chaque tableau à la même longueur.
Chaque élément d'une matrice A est noté $a_{i,j}$ où $i$ est le numéro de ligne et $j$ le numéro de colonne.
On représente une matrice de taille n,m en mathématiques ainsi :
$A = \begin{pmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m,1} & a_{m,2} & \cdots & a_{m,n} \end{pmatrix}$
En Python, une matrice est une liste de listes de même longueur.
Pour accéder à un élément organisé en liste de liste, on utilise une notation avec un double crochets. Le premier indice pointe la ligne et le deuxième indice pointe la colonne.
Si notre matrice contient n listes de m éléments on peux la voir ainsi :
$List= \begin{pmatrix} List[0][0] & List[0][1] & \cdots & List[0][n-1] \\ List[1][0] & List[1][1] & \cdots & List[1][n-1] \\ \vdots & \vdots & \ddots & \vdots \\ List[m-1][0] & List[m-1][1] & \cdots & List[m-1][n-1] \end{pmatrix}$
Pour accéder à l'élément j de la ième liste de L on écrira :
L[i][j]
L=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Ici , L[1][2]=7
L=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Le premier élément de la liste L est la liste [1,2,3,4], pour l'afficher on écrit : L[0]
.
Le troisième élément de ce L[0] est 3, pour y accéder nous utiliserons L[0][2]
L[2][3]
.On peux se servir de données structurées en liste de listes sans que ce soit des matrices.
Ecrire une fonction matriceAlea(n:int,m:int)->list
Python qui renvoie une matrice à n lignes et m colonnes d'entiers aléatoires entre 0 et 100.
Le but de cet exercice est de représenter un jeu de 32 cartes.
Un jeu de 32 cartes est composé de :
Le but est d'implémenter un jeu de 32 cartes et se doter de fonctions qui permettent interagir avec ce jeu.
creation_jeu32(couleur:tuple, valeur32:tuple)->list
docstring
, entre " "
, ou entre
""" """
" (si l'aide fait plusieurs lignes).creation_jeu32(couleur:tuple, valeur32:tuple)->list
qui retourne une liste de 32 cartes.
melange(jeu:list)->list
qui renvoie le jeu de cartes mélangé.
carte_hasard(jeu:list)->tuple
main(nombre_cartes: int,jeu:list)->list:
qui renvoie une main formée du nombre de cartes. Il faut penser à
retirer la main créée du jeu de 32 cartes.
On veut pouvoir comparer des cartes pour réaliser par exemple des jeux.
force(carte:tuple)->int:
qui renvoie la "force" de la carte.
jeu_force(jeu)
qui renvoie le jeu des cartes associées à leur force .compare(carte1:tuple,carte2:tuple,jeu_force:dict)->tuple
qui renvoie la carte avec la force la plus élevée.distance(carte1:tuple,carte2:tuple)->int
qui renvoie la "distance" entre deux cartes.Le prolongement de cette activité est la création d'un jeu (bataille, rami, blackjack, poker, pyramide, etc.). La création d'un jeu pourra être développée dans le cadre de votre projet.
Faire une recherche sur le web sur la notion de carré magique. Un carré magique d'ordre 3 est une matrice de 3 lignes et trois colonnes dont la somme des lignes, des colonnes et des diagonales fait le même nombre.
L=[ [2,7,6],
[9,5,1],
[4,3,8]]
Ecrire un script Python qui vérifie que ce carré est magique. Le prolongement de cet exercice est la recherche de carrés magiques à partir de carrés à compléter.
Python considère une phrase comme une séquence. Vous pouvez réaliser des essais avec cette citation célèbre du philosophe Confusius : "Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions." De quelle type de séquence se rapproche-t-on? De la liste et/ou du tuple ? Faire des tests à partir de vos connaissances en python.
# -*- coding: utf-8 -*-
citation="Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions."
# Quelques tests à faire :
citation[3]
citation[4]='z'
citation.append('!')
# En chercher d'autres
En utilisant la méthode count(elt)
, compter le nombre de 'a' dans la citation, le nombre de 'e', le nombre de voyelles, etc.
Il existe pour les listes des méthodes très intéressantes dans le traitement des chaînes de caractères. Ce sont les méthodes split()
et join()
. Observer le code proposé et réaliser les affichages des listes créées.
Penser à également utiliser la commande type(variables) afin de vérifier le type des variables créées.
En utilisant ces principes, comment faire pour créer une liste de mots à partir de la chaine de caractères suivante : chaine="un,deux,trois,quatre,cinq" ?
Extraire des groupes aléatoires.
L'objectif est de créer une fonction groupe(taille,nom_csv)
qui prend pour argument un entier : taille correspondant à la taille des groupes voulus et une chaine de caractère nom_csv correspondant au nom du fichier csv qui renvoie la répartition des groupes à la bonne taille de manière aléatoire.
Le matériel nécessaire se compose d'un fichier csv téléchargeable ici
Chaque individu possède trois attribut Prénom, Nom, Race
Les individus sont des "peaux vertes" constitués d'orques et de gobelins.
Quelques aides à la réalisation de ce travail :
import csv
eleve=open("eleve.csv","r") #ouvre le fichier eleve.csv est le met en mémoire dans la variable eleve
reader=csv.reader(eleve) #transforme la variable eleve en un objet itérable
for row in reader:
print(row[1])
eleve.close() #referme le fichier
Prolongement possible :