什么是解包元组的pythonic方法?

use*_*262 100 python tuples

这很难看.什么是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])
Run Code Online (Sandbox Code Playgroud)

Eli*_*sky 144

通常,您可以使用func(*tuple)语法.您甚至可以传递元组的一部分,这看起来就像您在这里尝试的那样:

t = (2010, 10, 2, 11, 4, 0, 2, 41, 0)
dt = datetime.datetime(*t[0:7])
Run Code Online (Sandbox Code Playgroud)

这称为解包元组,也可用于其他迭代(如列表).这是另一个例子(来自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]
Run Code Online (Sandbox Code Playgroud)

  • 它适用于任意迭代. (6认同)
  • 我想补充一点,这个语法适用于python 3.5中的任何地方(不仅仅是在函数调用中),因此对于像`x,y,z =*(1,2,3)`这样的实例语句可以正常工作(因为它应该很久以前) (3认同)