114 votes

Quel est le moyen pythonique de décompresser les n-uplets?

C'est moche. Quelle est la meilleure façon de le faire en 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])
 

158voto

Eli Bendersky Points 82298

Généralement, 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éballer un tuple, et peut aussi être utilisé pour d'autres itarables (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]
 

16voto

Charles Beattie Points 2637

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X