5 astuces Python quand on débute

Quelques astuces Python à la volée pour faciliter la prise en main du langage au début.

  • Utiliser les built-in functions any et all

any retourne True si un élément de la liste est True. En l’occurrence, dans cet exemple, si je cherche à savoir si un élément de ma liste est pair :

any(a % 2==0 for a in range(0,6,2))
> True

De même, si je change le pas, tous les éléments ne sont pas pairs :

any(a % 2==0 for a in range(1,6,1))
> True

all retourne True si tous les éléments sont True. Avec le même exemple :

all(a % 2==0 for a in range(0,6,2))
> True

Cette fois en revanche, puisque tous les éléments ne sont pas pairs, la fonction retourne False.

all(a % 2==0 for a in range(0,6,1))
> False

Pour résumer :

anyall
(True, True, True)TrueTrue
(True, False, False)TrueFalse
(True, True, False)TrueFalse
()FalseTrue
  • Concaténer des strings avec join
s = ["word","another", "and again", ""]
" ".join(s)
> 'word another and again '
  • Initialiser une liste avec des nombre identiques
[0]* 5
> [0, 0, 0, 0, 0]
  • Unpack les éléments d’une liste sans indiquer explicitement toutes les variables réceptrices.

Pour rappel, la fonction unpack sort les valeurs dans leur format original dans un tuple. Par exemple :

p = ("red", 1, True)
(eyes_color, age, is_male) = p

En revanche, et c’est là tout l’intérêt des arguments optionnels, il est possible de ne pas spécifier toutes les variables. Par exemple, on a :

a, *b, c = [1, 2, 3, 4, 5]

Le programme s’est débrouillé pour répartir les valeurs :

a
> 1
b
> [2, 3, 4]
c
> 5
  • L’opérateur splat

On peut multiplier une string par un nombre pour obtenir une string modifiée :

print("word" * 3)
> wordwordword

Comme vu précédemment, on peut utiliser cet opérateur pour l’unpacking de valeurs. Utile pour ne pas avoir à gérer plusieurs variables. Il est par ailleurs bon de savoir que ça fonctionne également avec des slices par exemple :

s = [1, 2, 3, "a string"]
print_elements(*s[:-1])
> 1
2
3
  • Le while else
n = 0
while n < 10:
    n += 1
else:
    print("finished")