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.
 
 
 
 
 
 

153 lines
3.0 KiB

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