C'est moche. Quelle est la meilleure façon de faire Pythonic?
import datetime
t= (2010, 10, 2, 11, 4, 0, 2, 41, 0)
dt = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
En règle générale, vous pouvez utiliser la syntaxe func(*Tuple)
. Vous pouvez même passer une partie du tuple, ce qui semble être ce que vous essayez de faire ici:
t = (2010, 10, 2, 11, 4, 0, 2, 41, 0)
dt = datetime.datetime(*t[0:7])
Cela s'appelle décompresser un tuple, et peut également être utilisé pour d'autres itérables (comme des listes). Voici un autre exemple (tiré du tutoriel Python ):
>>> range(3, 6) # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args) # call with arguments unpacked from a list
[3, 4, 5]
Voir https://docs.python.org/2/tutorial/controlflow.html#unpacking-argument-lists
dt = datetime.datetime(*t[:7])