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.
 
 
 
 
 
 

160 lines
3.1 KiB

  1. Chapitre 9 - 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. tuple_à_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. print(mon_tuple[0])
  26. # affiche: 42
  27. print(mon_tuple[1])
  28. # affiche: "bonjour"
  29. Modification
  30. ------------
  31. Interdit::
  32. mon_tuple = (42, "bonjour")
  33. mon_tuple[0] = 44
  34. # erreur: TypeError: 'tuple' object does not support item assignment
  35. Test d'appartenance
  36. -------------------
  37. Avec ``in``::
  38. mon_tuple = (42, 14)
  39. print(42 in mon_tuple)
  40. # affiche: True
  41. print(14 in mon_tuple)
  42. # affiche: True
  43. print(13 in mon_tuple)
  44. # affiche: 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. print(héros)
  51. # affiche: Batman
  52. print(side_kick)
  53. # affiche: Robin
  54. Quelques erreurs classiques
  55. ---------------------------
  56. .. code-block:: python
  57. héros, side_kick, ennemi = couple
  58. # erreur: ValueError (3 != 2)
  59. (héros,) = couple
  60. # erreur: ValueError (1 != 2)
  61. # Gare à la virgule:
  62. héros, = couple
  63. # erreur: 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. print(premier)
  77. # affiche: pomme
  78. print(deuxième)
  79. # affiche: banane
  80. print(troisième)
  81. # affiche: 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. # affiche: 10 de trèfle
  104. Ce n'est pas une nouvelle syntaxe, juste de la manipulation de tuples!