Objets itérables : tuples, listes, tableaux

De WikiMéca
Révision datée du 19 août 2019 à 17:15 par Gdumont (discussion | contributions) (Copie d'objets mutables)
Sauter à la navigation Sauter à la recherche

Un objet itérable est une variable contenant plusieurs autres variables que l’on peut parcourir de façon séquentielle à l'aide d'une boucle, par exemple : for x in objet_iterable ou x prendra successivement la valeur de chaque élément de l'objet itérable.

Les objets itérables que l’on rencontrera le plus souvent sont :

  • Les chaînes de caractères (type str)
  • Les tuples (type tuple)
  • Les listes (type list)
  • Les tableaux (type ndarray)

Instructions communes aux objets de types séquentiels

Initialisation

Initialisation d'une liste, d'un tableau, d'un tuple, d'une chaine avec valeur1,valeur2,... Listes :

s=[valeur1,valeur2,...]

Tableaux (nécessite le module numpy):

s=numpy.array([valeur1,valeur2,...])

Tuples :

s=(valeur1,valeur2,...)

Chaines de caractères :

s='abcdef'

Exemples :

>>>liste=[1,2,3]  
>>>liste
[1,2,3]
>>>tableau=numpy.array([1,2,3])
>>>tableau
array([1, 2, 3])
>>>tuple=(1,2,3)
>>>tuple
(1,2,3)
>>>chaine='abcdef'
>>>chaine
'abcdef'

Assignation

Pour listes et tableaux :

s[i]=valeur1 assigne la valeur valeur1 à l'élément i de s.

Impossible pour les chaines et tupples. Voir ...


Exemple :

>>>s=[1,2,3]
>>>s
[1,2,3]
>>>s[0]=2
>>>s
[2,2,3]

Ajout d'élément

Pour listes :

s.append(x) ajoute l'élément x à la fin de s

Pour les tableaux :

numpy.append(s,x) ajoute l'élément x à la fin de s

Exemples :

>>> s=[1,2,3]  #liste
>>> s.append(4)
4

>>> s=[1,2,3]  #liste
>>> s.append(4)
4

>>> s=np.array([1,2,3]) #tableau
>>> np.append(s,4)
array([1, 2, 3, 4])

Pour les listes

s.insert(k, x) ajoute x dans s à la position k.

Pour les tableaux

numpy.insert(s,k,x) ajoute x dans s à la position k

>>> s=[1,2,3]
>>> s.insert(2,4)
>>> s
[1, 2, 4, 3]

Suppression

Pour les listes

del s[k] ou s.remove(x) supprime le premier élément x dans s .

s.pop(k) renvoie l'élément d'indice k dans s et le supprime. Si k n'est pas précisé, la fonction agit sur le dernier élément de s.

Pour les tableaux

numpy.delete(s,k) supprime l'élément d'indice k dans s.

Exemples:

>>> s=[1,2,3,4,5]  #liste
>>> del s[1]
>>> s
[1, 3, 4, 5]
>>> s.remove(4)
>>>s
[1, 3, 5]
>>>s.pop()
5
>>> s
[1, 3]
>>> s=numpy.array([1,2,3,4])  #tableau
>>> numpy.delete(s,0)
array([2, 3, 4])

Accès aux éléments

Accès à un élément unique

Pour listes, tableaux, chaines, tuples

s[i] revoie l'élément d'indice i de s.

s[-i] revoie l'élément d'indice i de s en partant de la fin.

s[-1] revoie le dernier élément de s

Exemples :

>>> s=[1,2,3,4,5]
>>> s[2]
3
>>>s[-1]
5

Accès à des éléments multiples : slicing

s[i:j:k] renvoie les éléments de i inclus à j exclu de s avec un pas de k.

Exemples :

>>> s=[1,2,3,4,5]
>>> s[2:4]
[3, 4]
>>> s[1:4:2]
[2, 4]

Taille de l'objet

Pour listes, tableaux, chaines, tuples

len(s) renvoie le nombre d'éléments de s

>>> s=[1,2,3,4,5]
>>> len(s)
5

Somme, maximum et minimum des éléments

Pour listes, tableaux, tuples

sum(s) renvoie la somme des éléments de s pour une séquence de nombres


max(s) et min(s) renvoie le maximum et le minimun des éléments de s pour une séquence d'éléments ordonnables

Exemples :

>>> s=[1,2,3,4,5]
>>> sum(s)
15
>>> max(s), min(s)
(5, 1)

Appartenance

x in s renvoie True si x est dans s, False sinon.

et

x not in s a le comportement inverse.

et inversement Exemple :

>>>s=[1,2,3,5,6]
>>> 1 in s
True
>>> 6 in s
False
>>> 6 not in s
True

Concaténation

Pour listes, tableaux, chaines, tuples

s+t renvoie une liste contenant les éléments de s et de t à la suite.

Pour les listes on peut utiliser :

s.extend(t) pour ajouter les éléments de t à la fin de la liste s. Exemples :

>>> s=[1,2,3]
>>> t=[3,4,5]
>>> s+t
[1, 2, 3, 3, 4, 5]
>>> s.extend(t)  #uniquement pour les listes
>>> s
[1, 2, 3, 3, 4, 5]

Duplication

s*n renvoie une liste constituée de n fois les éléments de s. Exemple :

>>> s=[1,2,3]
>>> s*2
[1, 2, 3, 1, 2, 3]

Recherche, décomptes

Pour listes, tableaux, chaines, tuples

s.index(x) renvoie l'indice de la première occurrence de x dans s Exemple :

>>> s=[1,2,3]
>>> s.index(3)
2
>>> s.index(1)
0
>>> s='abc'
>>> s.index('b')
1

s.count(x) renvoie le nombre d'occurrences de x dans s

>>> s=[1,2,3,3,4,5]
>>> s.count(2)
1
>>> s.count(3)
2

Copie d'objets mutables

Dans un objet mutable, comme une liste ou un tableau, les éléments peuvent être modifiés sans que l'objet soit re-déclaré entièrement. Par contre, les chaînes de caractères et les tuples ne sont pas mutables : on ne peut modifier ou supprimer les éléments d’une chaîne de caractères ou d’un tuple, on a pas d’autre possibilité que de les recréer entièrement.

Créer une copie d'un objet mutable de façon intuitive par une affectation ne marche pas :

>>> liste1
[1, 2, 3]

>>> liste2=liste1

>>> liste1[0]=4

>>> liste2
[4, 2, 3]

liste2 n'est pas une copie indépendante de liste1 puisqu'elle est modifiée lorsque la première est modifiée.

Pour réaliser une copie indépendante de liste1 on utilise : liste2=liste1.copy() ou en utilisant le slicing :liste2=liste1[:]

>>> liste1
[1, 2, 3]

>>> liste2=liste1.copy()

>>> liste1[0]=4

>>> liste2
[1, 2, 3]

Appliquer une fonction à un objet itérable

La fonction la plus appropriée est a priori for x in objet_iterable ou x prendra successivement la valeur de chaque élément de l'objet itérable.

1 def f(x) :
2     return x**2+x -1
3 
4 liste =[1,2,3,4,5]
5 liste2 =[f(x) for x in liste ] # on applique f aux elements de liste
6 print ( liste2 )

Revoie :

[1.0 , 1.6931471805599454 , 2.09861228866811 , 2.386294361119891 , 2.6094379124341005]

On peut également mettre une condition if (listes en compréhension)

1 def f(x) :
2     return math.log (x)+1
3 liste =[ -1 ,0 ,1 ,2 ,3 ,4 ,5]
4 liste2 =[f(x) for x in liste if x > 0] # on applique f aux elements qui sont > 0
5 print ( liste2 )

Revoie :

[1.0 , 1.6931471805599454 , 2.09861228866811 , 2.386294361119891 , 2.6094379124341005]

Autres pages de la catégorie "Informatique"

Pages relatives à l'informatique en CPGE scientifiques.

Bases du langage Python

Algorithmes et méthodes numériques‎