【问题标题】:What is the pythonic way to unpack tuples? [duplicate]解压元组的pythonic方法是什么? [复制]
【发布时间】:2011-01-15 08:26:58
【问题描述】:

这很难看。有什么更 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])

【问题讨论】:

标签: python tuples


【解决方案1】:

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

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

这称为 unpacking 元组,也可以用于其他可迭代对象(例如列表)。这是另一个例子(来自Python tutorial):

>>> 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]

【讨论】:

  • 它适用于任意迭代。
  • 我想补充一点,这种语法在 python 3.5 中的任何地方都可以使用(不仅仅是在函数调用中),所以例如像 x, y, z = *(1, 2, 3) 这样的语句可以正常工作(因为它应该很长时间前)
  • 在其他列表项中有没有办法做到这一点?喜欢my_tuple = ("B", "C"); "%s %s %s" % ("A", *my_tuple)?
  • 没关系 - 我认为这是 %s 字符串替换方法的限制。改用"{} {} {}".format("A", *my_tuple) 就可以了。
  • 有没有人知道Python内部是如何实现解包的?
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 2012-05-02
    • 1970-01-01
    相关资源
    最近更新 更多