【问题标题】:In Python 2.6, How Might You Pass a List Object to a Method Which Expects A List of Arguments?在 Python 2.6 中,如何将列表对象传递给需要参数列表的方法?
【发布时间】:2010-10-15 01:15:27
【问题描述】:

我有一个包含各种信息的列表,我想通过新字符串format 方法将这些信息传递给几个字符串以包含在内。作为一个玩具示例,让我们定义

thelist = ['a', 'b', 'c']

我想做一个像print '{0} {2}'.format(thelist)print '{1} {2}'.format(thelist)这样的打印声明

当我运行它时,我收到消息IndexError: tuple index out of range;在胡闹时,它显然将整个列表视为一个对象。当然,我宁愿将thelist 翻译成'a', 'b', 'c'

我尝试使用元组并收到相同的错误。

这种特殊的技术到底叫什么?如果我知道这个名字,我可以搜索它。 “扩大”显然不是它。 “爆炸”不会产生任何有用的东西。

我的实际使用比玩具例子要长得多,也更乏味。

【问题讨论】:

    标签: python list arguments


    【解决方案1】:

    .format(*thelist)

    它是 Python 中调用语法的一部分。我也不知道这个名字,我不相信它有一个。请参阅tutorial

    它不仅适用于列表,它适用于任何可迭代对象。

    【讨论】:

    • 我认为它被称为“拆包”。
    • @Devin:通过=操作符绑定一些名称和在函数调用时绑定函数参数名称有很多相似之处。
    • 你是对的。这也意味着我链接到了错误的部分(减一)。已更正。
    • @J.F.塞巴斯蒂安:他们的分歧很大。许多相似之处正在被删除——例如,在 3.0 中,不能定义 f((a, b), c)。仍然可以做到 (a, b), c = [(1,2), 3] 。
    • @Devin:你还没有关注你自己的链接?只是在下一节的评论中说“使用从列表中解包的参数调用”。
    【解决方案2】:
    '{0} {2}'.format(*thelist)
    

    docs

    【讨论】:

      猜你喜欢
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 2018-03-05
      • 2018-08-19
      • 2019-10-21
      相关资源
      最近更新 更多