• Aucun résultat trouvé

Algorithmique et Programmation 1 Séquences : le type

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmique et Programmation 1 Séquences : le type"

Copied!
16
0
0

Texte intégral

(1)

Algorithmique et Programmation 1

Séquences : le typelist

Licences Informatique et Mathématiques 1ère année

Premier semestre 2015 – 2016

(2)

Introduction

Savez-vous résoudre les problèmes suivants ?

I Lire n nombres, puis les afficher dans l’ordre inverse

I Lire n nombres, puis les afficher dans l’ordre croissant

I Lire n nombres différents (et vérifier qu’ils le sont)

I Stocker dans une variable les n premiers nombres premiers

I Stocker tous lesP(x)pour x variant de aàb par pas de 0,01

I Écrire une fonction qui calcule le minimumet le maximum d’une suite de nombre.

I Écrire une fonction qui calcule le temps de vol etl’altitude de la suite de Syracuse de premier termeval, etc.

Nous allons voir un nouveau type de données très important pour résoudre ce genre de problèmes : le typelist

(3)

Introduction

Savez-vous résoudre les problèmes suivants ?

I Lire n nombres, puis les afficher dans l’ordre inverse

I Lire n nombres, puis les afficher dans l’ordre croissant

I Lire n nombres différents (et vérifier qu’ils le sont)

I Stocker dans une variable les n premiers nombres premiers

I Stocker tous lesP(x)pour x variant de aàb par pas de 0,01

I Écrire une fonction qui calcule le minimumet le maximum d’une suite de nombre.

I Écrire une fonction qui calcule le temps de vol etl’altitude de la suite de Syracuse de premier termeval, etc.

Nous allons voir un nouveau type de données très important pour résoudre ce genre de problèmes : le typelist

(4)

Les listes en Python : le type list

Objectif : désigner avec une seule variable une collection de valeurs

Liste : suiteindexée(numérotée) d’objets quelconques (typelisten python)

I Élements “rangés” dans des “cases” numérotées de 0 à n−1

I En mémoire : tableau àn cases, chacune contenant une référence (“flèche”) vers une valeur

I Peut contenir des objets de plusieurs types différents

I Mutable: peut être modifiée, agrandie, raccourcie...

(5)

Création et affichage

I Création : suite entre [ et] d’expressions séparées par,

>>> lst = [3, 'toto', 4.5, False, None]

>>> print(lst)

[3, 'toto', 4.5, False, None]

I Liste vide [] : liste ne contenant aucun objet

>>> lst2 = []

>>> print(lst2) []

I Une liste peut contenir d’autres listes !

>>> lst = ['test', [1, [2], 3]]

>>> print(lst)

['test', [1, [2], 3]]

I Exemple

(6)

Accès aux éléments

I Accès à un élément donné : indexation

>>> lst = [3, 'toto', 4.5]

>>> lst[1]

'toto'

I Attention : les éléments sont indexés (numérotés) à partir de 0 L’accès à un indice supérieur ou égal au nombre d’éléments provoque une erreur

Exercice : Écrire une fonction qui affiche tous les éléments d’une liste (un par ligne)

def affiche_liste(lst): i = 0

while i < len(lst): print lst[i] i = i + 1

(7)

Accès aux éléments

I Accès à un élément donné : indexation

>>> lst = [3, 'toto', 4.5]

>>> lst[1]

'toto'

I Attention : les éléments sont indexés (numérotés) à partir de 0 L’accès à un indice supérieur ou égal au nombre d’éléments provoque une erreur

Exercice : Écrire une fonction qui affiche tous les éléments d’une liste (un par ligne)

def affiche_liste(lst):

i = 0

while i < len(lst):

print lst[i]

i = i + 1

(8)

Opérations de base

I Longueur d’une liste : fonctionlen

>>> lst = [3, 'toto', 4.5, False, None]

>>> len(lst) 5>>> len([])

0

I Concaténation

>>> [3, 'toto', 4.5] + [False, None]

[3, 'toto', 4.5, False, None]

>>> [] + [3, 'toto', 4.5] + []

[3, 'toto', 4.5]

I Répétition

>>> 3 * ['a', 'b']

['a', 'b', 'a', 'b', 'a', 'b']

>>> [0] * 13

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

(9)

Test d’appartenance

Exercice : Écrire une fonction recevant une liste et une valeur, et renvoyantTruesi la valeur apparaît dans la liste (Falsesinon)

def appartient(lst, val): i = 0

while i < len(lst): if lst[i] == val:

return True i = i + 1 return False

>>> lst = ['Hildegarde', 'Cunégonde', 'Médor']

>>> appartient(lst, 'Cunégonde') True>>> if appartient(lst, 'Médor'):

. . . print('Bon chien !')

. . .

Bon chien !

(10)

Test d’appartenance

Exercice : Écrire une fonction recevant une liste et une valeur, et renvoyantTruesi la valeur apparaît dans la liste (Falsesinon)

def appartient(lst, val):

i = 0

while i < len(lst):

if lst[i] == val:

return True i = i + 1 return False

>>> lst = ['Hildegarde', 'Cunégonde', 'Médor']

>>> appartient(lst, 'Cunégonde') True>>> if appartient(lst, 'Médor'):

. . . print('Bon chien !')

. . .

Bon chien !

(11)

Test d’appartenance

Remarque : Cette fonctionnalité existe déjà en Python

I val in lstvaut True sivalapparaît danslst,Falsesinon

I Réciproquement, on peut écrire val not in lst

>>> lst = ['Hildegarde', 'Cunégonde', 'Médor']

>>> 'Cunégonde' in lst True>>> 'Rex' not in lst True>>> if 'Médor' in lst:

. . . print('Bon chien !')

. . .

Bon chien !

(12)

Modification d’un élément

I On peut modifier le i-ème élément de lstpar une affectation :

>>> lst = [3, 'toto', 4.5, False, None]

>>> lst[2]

4.5

>>> lst[2] = 'titi'

>>> lst

[3, 'toto', 'titi', False, None]

Attention, ceci ne crée pas une nouvelle liste mais modifie la liste sur place !

>>> lst = [3, 'toto', 4.5, False, None]

>>> lst_bis = lst

>>> lst[2] = 'titi'

>>> lst_bis

[3, 'toto', 'titi', False, None]

(13)

Agrandir ou rétrécir une liste

Plusieurs instructions ont un effet sur la taille de la liste :

I L’instruction lst.append(elem) ajoute l’élémentelem à la fin de la liste lst

I L’instruction lst.pop() supprime le dernier élément delstet renvoie sa valeur

I L’instructionlst.pop(i)supprime lei-ème élément de lstet renvoie sa valeur

appendetpopsont appeléesméthodes, ou fonctions s’appliquant à un objet (nous en verrons d’autres dans les cours suivants)

Attention, ces instructions ne créent pas une nouvelle liste mais modifient la liste sur place !

Attention, ne pas confondre x = lst[2]et x = lst.pop(2)!

(14)

Agrandir ou rétrécir une liste

Exemple

>>> lst = [3, 'toto', 4.5, False, None]

>>> lst_bis = lst

>>> lst.append(1)

>>> print(lst_bis)

[3, 'toto', 4.5, False, None, 1]

>>> elem = lst_bis.pop(2)

>>> print(elem) 4.5>>> print(lst)

[3, 'toto', False, None, 1]

(15)

Agrandir ou rétrécir une liste

Exercice: écrire une fonction recevant deux listes et ajoutant tous les éléments de la seconde à la fin de la première

def etend_liste(une_liste, autre_liste): i = 0

while i < len(autre_liste):

une_liste.append(autre_liste[i]) i = i + 1

I Attention, pas de return: une_listemodifiée sur place !

I Attention, une_liste.append(autre_liste.pop(0)) modifieraitautre_liste !

I Cette fonctionnalité existe déjà en Python : une_liste.extend(autre_liste)

(16)

Agrandir ou rétrécir une liste

Exercice: écrire une fonction recevant deux listes et ajoutant tous les éléments de la seconde à la fin de la première

def etend_liste(une_liste, autre_liste):

i = 0

while i < len(autre_liste):

une_liste.append(autre_liste[i]) i = i + 1

I Attention, pas de return: une_listemodifiée sur place !

I Attention, une_liste.append(autre_liste.pop(0)) modifieraitautre_liste !

I Cette fonctionnalité existe déjà en Python : une_liste.extend(autre_liste)

Références

Documents relatifs

[r]

[r]

« Borne inf » et « borne sup » (tq borne inf &lt;borne sup) appartenant à un type scalaire discret ordonnée (entier, caractère et scalaire énuméré). Activité: Définir le

Pour démontrer le dernier, nous traitons, dans le para- graphe 4, des opérateurs différentiels ordinaires à coefficients constants définis sur la demi-droite R^.1. Dans le paragraphe

- On peut considérer des équations du type elliptique dont l’inconnue est fonction d’un point d’une région prise sur une variété autre que l’espace

Tous les professeurs présents ces jours-là tenaient des ateliers selon leur compétence ou leur goût. Les résultats furent si encourageants qu'il n'était pas

Rapports entre les concentrations du matériau solide de charriage dérivé par la prise d'eau et celui chassé.. Rapports entre les concentrations du matériau solide de

soutient, à Juste titre, que la Société élec- trique est responsable du déplorable accident, dont il s'agjt ; qu'il résulte, en effer, des documents produits que ladite société