01/09/2015
Not frequently asked questions for Python ou la foire aux questions qui ne sont pas (souvent) posées.
Ce sont des solutions ou des astuces que j’ai glanées ci et là.
version : python3
>>> def f(x, y): print(x + y)
...
>>> t = (12, 9)
>>> l = [12, 9]
>>> d = {'u':12, 'v':9}
>>> f(t)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() missing 1 required positional argument: 'y'
>>> f(*t)
21
>>> f(*l)
21
>>> f(*d)
uv
C’est ce qu’on utilise couramment dans les fonctions qui admettent plusieurs paramètres def f(x, *args, **kwds)
Source : Stackoverflow
>>> t = (12, 9)
>>> _, x = t
>>> x
9
>>> l=['a', 'b', 'c']
>>> for i, x in enumerate(l): print(i, x)
...
0 a
1 b
2 c
Source : Stackoverflow
On a "x + 2*y - 3" et on souhaite remplacer les espaces multiples par un seul.
Exemple
>>> s='x + 2*y - 3'
>>> s = ' '.join(s.split())
>>> s
'x + 2*y - 3'
Normalement L[debut:fin:pas] retourne une coupe de L commençant à debut, finissant à fin avec un pas.
Exemple
>>> L=[x + 1 for x in range(10)]
>>> L
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> L[2:7:2]
[3, 5, 7]
>>> L=[x + 1 for x in range(10)]
>>> L[::2]
[1, 3, 5, 7, 9]
>>> L[::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]