Objets itérables : tuples, listes, tableaux : Différence entre versions

De WikiMéca
Sauter à la navigation Sauter à la recherche
(Copie d'objets mutables)
(10 révisions intermédiaires par le même utilisateur non affichées)
Ligne 9 : Ligne 9 :
  
 
==Instructions communes aux objets de types séquentiels==  
 
==Instructions communes aux objets de types séquentiels==  
Soit s et t des objets de type séquentiel. et i, j, k et n des entiers.
+
===Initialisation===
{| class="wikitable"
+
Initialisation d'une liste, d'un tableau, d'un tuple, d'une chaine avec valeur1,valeur2,...
|-
+
Listes :
! Opération!! Résultat !! Exemple
 
|-
 
| Listes :
 
  
 
<syntaxhighlight lang="Python" inline>s=[valeur1,valeur2,...]</syntaxhighlight>   
 
<syntaxhighlight lang="Python" inline>s=[valeur1,valeur2,...]</syntaxhighlight>   
Ligne 29 : Ligne 26 :
  
 
<syntaxhighlight lang="Python" inline>s='abcdef' </syntaxhighlight>
 
<syntaxhighlight lang="Python" inline>s='abcdef' </syntaxhighlight>
|Initialisation d'une liste, d'un tableau, d'un tuple, d'une chaine avec valeur1,valeur2,...
+
 
|<pre>>>>liste=[1,2,3]   
+
Exemples :
 +
<pre>>>>liste=[1,2,3]   
 
>>>liste
 
>>>liste
 
[1,2,3]
 
[1,2,3]
Ligne 43 : Ligne 41 :
 
'abcdef'
 
'abcdef'
 
</pre>
 
</pre>
|-
+
===Assignation===
|Pour listes, tableaux, chaines, tuples
+
Pour listes et tableaux :
 +
 
 +
<syntaxhighlight lang="Python" inline>s[i]=valeur1</syntaxhighlight> assigne la valeur <syntaxhighlight lang="Python" inline>valeur1</syntaxhighlight> à l'élément i de s.
 +
 
 +
'''Impossible pour les chaines et tupples.''' Voir ...
 +
 
  
<syntaxhighlight lang="Python" inline>s[i]=valeur</syntaxhighlight>
+
Exemple :
|Assignation d'une valeur à l'élément i de s
+
<pre>>>>s=[1,2,3]
|rowspan="3"|<pre>>>>s=[1,2,3]
+
>>>s
>>>s[0]
+
[1,2,3]
1
 
>>>s[2]
 
3
 
 
>>>s[0]=2
 
>>>s[0]=2
 
>>>s
 
>>>s
 
[2,2,3]
 
[2,2,3]
>>>s[-1]
 
3
 
 
</pre>
 
</pre>
|-
 
|Pour listes, tableaux, chaines, tuples
 
  
<syntaxhighlight lang="Python" inline>s[i]</syntaxhighlight>  
+
===Ajout d'élément===
|Revoie l'élément d'indice i de s  
+
Pour listes :
|-
+
 
|Pour listes, tableaux, chaines, tuples
+
<syntaxhighlight lang="Python" inline>s.append(x)</syntaxhighlight> '''ajoute l'élément x à la fin de s'''
 +
 
 +
Pour les tableaux :
 +
 
 +
<syntaxhighlight lang="Python" inline>numpy.append(s,x)</syntaxhighlight> '''ajoute l'élément x à la fin de s'''
 +
 
 +
Exemples :
 +
<pre>>>> 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])
 +
</pre>
 +
 
 +
Pour les listes
 +
 
 +
<syntaxhighlight lang="Python" inline>s.insert(k, x)</syntaxhighlight>  ajoute x dans s '''à la position k'''.
 +
 
 +
Pour les tableaux
 +
 
 +
<syntaxhighlight lang="Python" inline>numpy.insert(s,k,x)</syntaxhighlight>  ajoute x dans s '''à la position k''' 
 +
<pre>>>> s=[1,2,3]
 +
>>> s.insert(2,4)
 +
>>> s
 +
[1, 2, 4, 3]
 +
</pre>
 +
===Suppression===
 +
Pour les listes
 +
 
 +
<syntaxhighlight lang="Python" inline>del s[k]</syntaxhighlight> ou <syntaxhighlight lang="Python" inline>s.remove(x)</syntaxhighlight> '''supprime le premier élément x''' dans s .
 +
 
 +
<syntaxhighlight lang="Python" inline>s.pop(k)</syntaxhighlight> 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
 +
 
 +
<syntaxhighlight lang="Python" inline>numpy.delete(s,k)</syntaxhighlight>  '''supprime l'élément d'indice k''' dans s.
 +
 
 +
Exemples: <pre>>>> 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])
 +
</pre>
 +
 
 +
===Accès aux éléments===
 +
====Accès à un élément unique====
 +
Pour listes, tableaux, chaines, tuples
  
<syntaxhighlight lang="Python" inline>s[-1]</syntaxhighlight>  
+
<syntaxhighlight lang="Python" inline>s[i]</syntaxhighlight> revoie l''''élément d'indice i''' de s.
|Revoie le dernier élément de s  
 
|-
 
|Pour listes, tableaux, chaines, tuples
 
  
<syntaxhighlight lang="Python" inline>s[i:j]</syntaxhighlight>  
+
<syntaxhighlight lang="Python" inline>s[-i]</syntaxhighlight> revoie l''''élément d'indice i''' de s '''en partant de la fin'''.
|Tranche de i inclus à j exclu de s  
+
 
|rowspan="2"| <pre>  
+
<syntaxhighlight lang="Python" inline>s[-1]</syntaxhighlight> revoie le '''dernier élément''' de s
>>> s=[1,2,3,4,5]
+
 
 +
Exemples :
 +
<pre>>>> s=[1,2,3,4,5]
 +
>>> s[2]
 +
3
 +
>>>s[-1]
 +
5
 +
</pre>
 +
====Accès à des éléments multiples : slicing====
 +
<syntaxhighlight lang="Python" inline>s[i:j:k]</syntaxhighlight>  
 +
renvoie '''les éléments de i inclus à j exclu de s avec un pas de k'''.
 +
Exemples : <pre>>>> s=[1,2,3,4,5]
 
>>> s[2:4]
 
>>> s[2:4]
 
[3, 4]
 
[3, 4]
Ligne 81 : Ligne 146 :
 
[2, 4]
 
[2, 4]
 
</pre>
 
</pre>
|-
 
|Pour listes, tableaux, chaines, tuples
 
  
<syntaxhighlight lang="Python" inline>s[i:j:k]</syntaxhighlight> 
+
===Taille de l'objet===
| Tranche de i inclus à j exclu par pas de k 
+
Pour listes, tableaux, chaines, tuples
|-
 
|Pour listes, tableaux, chaines, tuples
 
  
<syntaxhighlight lang="Python" inline>len(s)</syntaxhighlight>  
+
<syntaxhighlight lang="Python" inline>len(s)</syntaxhighlight> renvoie le '''nombre d'éléments''' de s  
|Longueur de s  
+
<pre>>>> s=[1,2,3,4,5]
|rowspan="3"| <pre>  
 
>>> s=[1,2,3,4,5]
 
 
>>> len(s)
 
>>> len(s)
 
5
 
5
 +
</pre>
 +
===Somme, maximum et minimum des éléments ===
 +
Pour listes, tableaux, tuples
 +
 +
<syntaxhighlight lang="Python" inline>sum(s)</syntaxhighlight> renvoie la '''somme des éléments de s''' pour une séquence de nombres 
 +
 +
 +
<syntaxhighlight lang="Python" inline>max(s)</syntaxhighlight> et <syntaxhighlight lang="Python" inline>min(s)</syntaxhighlight>
 +
renvoie le '''maximum''' et le '''minimun''' des éléments de s pour une séquence d'éléments ordonnables 
 +
 +
Exemples :
 +
<pre>>>> s=[1,2,3,4,5]
 
>>> sum(s)
 
>>> sum(s)
 
15
 
15
Ligne 100 : Ligne 171 :
 
(5, 1)
 
(5, 1)
 
</pre>  
 
</pre>  
|-
+
===Appartenance===
|Pour listes, tableaux, tuples
 
  
<syntaxhighlight lang="Python" inline>sum(s)</syntaxhighlight>  
+
<syntaxhighlight lang="Python" inline>x in s</syntaxhighlight> renvoie <syntaxhighlight lang="Python" inline>True</syntaxhighlight> si x est dans s, <syntaxhighlight lang="Python" inline>False</syntaxhighlight> sinon.
| Somme des éléments de s pour une séquence de nombres 
 
|-
 
|Pour listes, tableaux, tuples, chaines
 
  
<syntaxhighlight lang="Python" inline>max(s)</syntaxhighlight> et <syntaxhighlight lang="Python" inline>min(s)</syntaxhighlight>
+
et
| maximum et minimun des éléments de s pour une séquence d'éléments ordonnables 
 
|-
 
|Pour listes, tableaux, chaines, tuples
 
  
<syntaxhighlight lang="Python" inline>x in s</syntaxhighlight> et
+
<syntaxhighlight lang="Python" inline>x not in s</syntaxhighlight> a le comportement inverse.
 
 
<syntaxhighlight lang="Python" inline>x not in s</syntaxhighlight>
 
|<syntaxhighlight lang="Python" inline>True</syntaxhighlight> si x est dans s, <syntaxhighlight lang="Python" inline>False</syntaxhighlight> sinon
 
  
 
et inversement  
 
et inversement  
|<pre>  
+
Exemple :
>>>s=[1,2,3,5,6]
+
<pre>>>>s=[1,2,3,5,6]
 
>>> 1 in s
 
>>> 1 in s
 
True
 
True
Ligne 129 : Ligne 190 :
 
</pre>
 
</pre>
  
|-
+
===Concaténation===
|Pour listes, tableaux, chaines, tuples
+
Pour listes, tableaux, chaines, tuples
  
<syntaxhighlight lang="Python" inline>s+t</syntaxhighlight>  
+
<syntaxhighlight lang="Python" inline>s+t</syntaxhighlight> renvoie une liste contenant les éléments de s et de t à la suite.
  
Pour les listes  
+
Pour les listes on peut utiliser :
  
<syntaxhighlight lang="Python" inline>s.extend(t)</syntaxhighlight>  
+
<syntaxhighlight lang="Python" inline>s.extend(t)</syntaxhighlight> pour ajouter les éléments de t à la fin de la liste s.
| Concaténation de s et t
+
Exemples :
|<pre>
+
<pre>>>> s=[1,2,3]
>>> s=[1,2,3]
 
 
>>> t=[3,4,5]
 
>>> t=[3,4,5]
 
>>> s+t
 
>>> s+t
Ligne 147 : Ligne 207 :
 
[1, 2, 3, 3, 4, 5]
 
[1, 2, 3, 3, 4, 5]
 
</pre>
 
</pre>
|-
+
===Duplication===
|Pour listes, tableaux, chaines, tuples
+
<syntaxhighlight lang="Python" inline>s*n</syntaxhighlight>  renvoie une liste constituée de n fois les éléments de s.
 
+
Exemple :
<syntaxhighlight lang="Python" inline>s*n</syntaxhighlight>   
+
<pre>>>> s=[1,2,3]
| Concaténation de n copies de s
 
|<pre>
 
>>> s=[1,2,3]
 
 
>>> s*2
 
>>> s*2
 
[1, 2, 3, 1, 2, 3]
 
[1, 2, 3, 1, 2, 3]
 
</pre>
 
</pre>
|-
+
===Recherche, décomptes===
|Pour listes, tableaux, chaines, tuples
+
Pour listes, tableaux, chaines, tuples
  
<syntaxhighlight lang="Python" inline>s.index(x)</syntaxhighlight>
+
<syntaxhighlight lang="Python" inline>s.index(x)</syntaxhighlight> renvoie l''''indice de la première occurrence de x''' dans s   
| Indice de la première occurrence de x dans s   
+
Exemple :
|<pre>
+
<pre>>>> s=[1,2,3]
>>> s=[1,2,3]
 
 
>>> s.index(3)
 
>>> s.index(3)
 
2
 
2
Ligne 172 : Ligne 228 :
 
1
 
1
 
</pre>
 
</pre>
|-
 
|Pour listes, chaines, tuples
 
  
<syntaxhighlight lang="Python" inline>s.count(x)</syntaxhighlight>
+
<syntaxhighlight lang="Python" inline>s.count(x)</syntaxhighlight> renvoie le '''nombre d'occurrences de x''' dans s   
| Nombre d'occurrences de x dans s   
+
<pre>>>> s=[1,2,3,3,4,5]
|<pre>
 
>>> s=[1,2,3,3,4,5]
 
 
>>> s.count(2)
 
>>> s.count(2)
 
1
 
1
Ligne 184 : Ligne 236 :
 
2
 
2
 
</pre>
 
</pre>
|-
+
===Copie d'objets mutables===
|Pour listes
+
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'''.
<syntaxhighlight lang="Python" inline>s.append(x)</syntaxhighlight> 
 
 
 
Pour les tableaux
 
 
 
<syntaxhighlight lang="Python" inline>numpy.append(s,x)</syntaxhighlight> 
 
 
 
| Ajoute x dans s à la dernière position 
 
|<pre>
 
>>> s=[1,2,3]
 
>>> s.append(4)
 
4
 
>>> s.count(3)
 
2
 
</pre>
 
  
|-
+
Créer une copie d'un objet mutable de façon intuitive par une affectation '''ne marche pas''' :
|Pour les listes
+
<pre>>>> liste1
 +
[1, 2, 3]
  
<syntaxhighlight lang="Python" inline>s.insert(k, x)</syntaxhighlight>
+
>>> liste2=liste1
  
Pour les tableaux
+
>>> liste1[0]=4
  
<syntaxhighlight lang="Python" inline>numpy.insert(s,k,x)</syntaxhighlight>
+
>>> liste2
| Ajoute x dans s à la position k 
+
[4, 2, 3]
|<pre>
 
>>> s=[1,2,3]
 
>>> s.insert(2,4)
 
>>> s
 
[1, 2, 4, 3]
 
 
</pre>
 
</pre>
|-
+
<syntaxhighlight lang="Python" inline>liste2</syntaxhighlight> '''n'est pas une copie indépendante''' de <syntaxhighlight lang="Python" inline>liste1</syntaxhighlight> puisqu'elle est modifiée lorsque la première est modifiée.
|Pour les listes
 
 
 
<syntaxhighlight lang="Python" inline>del s[k]</syntaxhighlight>  
 
  
ou <syntaxhighlight lang="Python" inline>s.remove(x)</syntaxhighlight>
+
Pour réaliser une '''copie indépendante''' de <syntaxhighlight lang="Python" inline>liste1</syntaxhighlight> on utilise :
 +
<syntaxhighlight lang="Python" inline>liste2=liste1.copy()</syntaxhighlight> ou en utilisant le slicing :<syntaxhighlight lang="Python" inline>liste2=liste1[:]</syntaxhighlight>
 +
<pre>>>> liste1
 +
[1, 2, 3]
  
Pour les tableaux
+
>>> liste2=liste1.copy()
  
<syntaxhighlight lang="Python" inline>numpy.delete(s,k)</syntaxhighlight>
+
>>> liste1[0]=4
| Supprime le premier élément x dans s ;
 
  
Ou supprime l'élément d'indice k dans s
+
>>> liste2
|<pre>
+
[1, 2, 3]
>>> s=[1,2,3,4,5]  #liste
 
>>> del s[1]
 
>>> s
 
[1, 3, 4, 5]
 
>>> s.remove(4)
 
>>>s
 
[1, 3, 5]
 
>>> s=numpy.array([1,2,3,4])  #tableau
 
>>> numpy.delete(s,0)
 
array([2, 3, 4])
 
 
</pre>
 
</pre>
|}
 
  
 
==Appliquer une fonction à un objet itérable==
 
==Appliquer une fonction à un objet itérable==

Version du 19 août 2019 à 17:15

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‎