Astuces python
On réunit ici quelques commandes pratiques spécifiques au langage python. Comme elles n’existent pas dans tous
les langages, on déconseille de les utiliser dans un algorithme écrit en français. Cependant, elles seront sans doute
acceptées pour rédiger une fonction en python.
1 Boucle "pour" améliorée : parcourt d’un tableau, d’une chaîne de carac-
tères, d’un fichier
Soit Xun tableau, ou une chaîne de caractère, ou un fichier. Alors si on effectue :
for x in X:
La variable xprendra comme valeurs successives :
— Les éléments de Xsi Xest un tableau (N.B. dans le cas d’un tableau de tableaux, xprendra donc comme valeurs
successives les lignes de ce tableau)
— Les caractères de Xsi Xest une chaîne de caractères
— Les lignes de Xsi Xest un fichier.
2 Liste en compréhension
Soit fune fonction définie sur les entiers. La commande :
[ f(i) for i in range(0,n) ]
crée le tableau [ f(0), f(1), ... f(n-1)].
Par exemple [ i**2 for i in range(0,4)] renvoie [0,1,4,9].
On peut bien sûr utiliser une fonction constante : par exemple [0 for i in range(0,n)] crée un tableau conte-
nant nzéros.
On peut créer des tableaux de tableaux de la sorte :
[ [0 for j in range(0,p)] for i in range(0,n)]
crée un tableau de tableaux de format n×p.
Enfin, il est possible de combiner cette astuce avec la précédente. Par exemple si Lest un tableau d’entier,
[ x**2 for x in L] crée le tableau des carrés des éléments de L.
3 Tranches de listes
Soit Tun tableau. La commande T[deb: fin: pas] renvoie les éléments de Tdu numéro deb au numéro fin
(exclu comme toujours), en avançant par pas de pas.
Par exemple, pour récupérer les carrés de nombres impairs jusqu’à n−1 on peut taper :
[i**2 for i in range(0,n)] [1:n:2]
Mais bien sûr c’est plus simple d’utiliser : [ (2*i+1)**2 for i in range(0,n//2)]
ou même [i**2 for i in range(0,n,2)].