You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

01-tuples.md 2.7 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. +++
  2. title = "Tuples"
  3. weight = 1
  4. +++
  5. # Tuples
  6. ## Définition
  7. Un tuple est un ensemble *ordonné* et *immuable* d'éléments. Le nombre, l'ordre et la valeur des éléments sont fixes.
  8. ## Création de tuples
  9. ```python
  10. # Un tuple vide
  11. ()
  12. # Un tuple à un élément
  13. (1,) # notez la virgule
  14. # Un tuple à deux éléments, aussi appelé couple
  15. (1, 2)
  16. ```
  17. Sauf pour le tuple vide, c'est la *virgule* qui fait le tuple
  18. Note: tous les tuples sont truthy, sauf les tuples vides.
  19. # Tuples hétérogènes
  20. Comme les listes, les tuples peuvent contenir des éléments de types différents:
  21. ```python
  22. # Un entier et une string
  23. mon_tuple = (42, "bonjour")
  24. # Un entier et un autre tuple
  25. mon_tuple = (21, (True, "au revoir"))
  26. ```
  27. ## Accès
  28. Avec `[]` et l'index de l'élément dans le tuple:
  29. ```python
  30. mon_tuple = (42, "bonjour")
  31. mon_tuple[0]
  32. 42
  33. mon_tuple[1]
  34. "bonjour"
  35. ```
  36. ## Modification
  37. Interdit!
  38. ```python
  39. mon_tuple = (42, "bonjour")
  40. mon_tuple[0] = 44
  41. TypeError: 'tuple' object does not support item assignment
  42. ```
  43. ## Test d'appartenance
  44. Avec `in`
  45. ```python
  46. >>> mon_tuple = (42, 14)
  47. >>> 42 in mon_tuple
  48. True
  49. >>> 14 in mon_tuple
  50. True
  51. >>> 13 in mon_tuple
  52. False
  53. ```
  54. ## Déstructuration
  55. Créer plusieurs variables en une seule ligne:
  56. ```python
  57. >>> couple = ("Batman", "Robin")
  58. >>> héros, side_kick = couple
  59. >>> héros
  60. 'Batman'
  61. >>> side_kick
  62. 'Robin'
  63. ```
  64. ## Quelques erreurs classiques
  65. ```python
  66. >>> héros, side_kick, ennemi = couple
  67. ValueError (3 != 2)
  68. >>> (héros,) = couple
  69. ValueError (1 != 2)
  70. # Gare à la virgule:
  71. >>> héros, = couple
  72. ValueError (1 != 2)
  73. ```
  74. ## Pièges
  75. ```python
  76. f(a, b, c) # appelle f() avec trois arguments
  77. f((a, b, c)) # appelle f() avec un seul argument
  78. # (qui est lui-même un tuple à 3 valeurs)
  79. f(()) # appelle f() avec un tuple vide
  80. (a) # juste la valeur de a entre parenthèses
  81. (a,) # un tuple à un élément, qui vaut la valeur de a
  82. ```
  83. ## On peut aussi déstructurer des listes
  84. ```python
  85. >>> fruits = ["pomme", "banane", "orange"]
  86. >>> premier, deuxième, troisième = fruits
  87. >>> premier
  88. "pomme"
  89. >>> deuxième
  90. "banane"
  91. >>> troisième
  92. "orange"
  93. ```
  94. On dit aussi: unpacking
  95. ## Utilisations des tuples
  96. Pour simplifier des conditions:
  97. ```python
  98. # Avant
  99. if (
  100. ma_valeur == "nord" or
  101. ma_valeur == "sud" or
  102. ma_valeur == "ouest" or
  103. ma_valeur == "est"):
  104. print("direction", ma_valeur)
  105. ```
  106. ```python
  107. # Après
  108. if ma_valeur in ("nord", "sud", "est", "ouest"):
  109. print("direction", ma_valeur)
  110. ```
  111. ## Pour retourner plusieurs valeurs
  112. ```python
  113. def tire_carte():
  114. valeur = "10"
  115. couleur = "trèfle"
  116. return (valeur, couleur)
  117. v, c = tire_carte()
  118. print(v, "de", c)
  119. # 10 de trèfle
  120. ```
  121. Ce n'est pas une nouvelle syntaxe, juste de la manipulation de tuples!