【问题标题】:Append a tuple to a list - what's the difference between two ways?将元组附加到列表 - 两种方式有什么区别?
【发布时间】:2015-09-19 10:20:45
【问题描述】:

4 个月前,我写了我的第一个“Hello World”。从那以后,我一直在学习莱斯大学提供的 Coursera Python 课程。我最近参与了一个涉及元组和列表的小型项目。对我来说,将元组添加到列表中有些奇怪:

a_list = []
a_list.append((1, 2))       # Succeed! Tuple (1, 2) is appended to a_list
a_list.append(tuple(3, 4))  # Error message: ValueError: expecting Array or iterable

这让我很困惑。为什么使用“tuple(...)”而不是简单的“(...)”来指定要附加的元组会导致ValueError

顺便说一句:我用CodeSkulptorcoding tool used in the course

【问题讨论】:

    标签: python list types append tuples


    【解决方案1】:

    tuple 函数只接受一个参数,该参数必须是可迭代的

    tuple([iterable])

    返回一个元组,其项目与可迭代的项目相同且顺序相同。

    尝试使用[3,4](列表)或(3,4)(元组)使3,4成为可迭代对象

    例如

    a_list.append(tuple((3, 4)))
    

    会起作用

    【讨论】:

      【解决方案2】:

      因为tuple(3, 4) 不是创建元组的正确语法。正确的语法是 -

      tuple([3, 4])
      

      (3, 4)
      

      你可以从这里看到它 - https://docs.python.org/2/library/functions.html#tuple

      【讨论】:

        【解决方案3】:

        我相信tuple() 将列表作为参数 例如,

        tuple([1,2,3]) # returns (1,2,3)
        

        看看用括号括起来会发生什么

        【讨论】:

          【解决方案4】:

          应该没有区别,但是你的tuple方法不对,试试:

          a_list.append(tuple([3, 4]))
          

          【讨论】:

            【解决方案5】:

            append 无关。 tuple(3, 4) all 本身就会引发该错误。

            原因是,正如错误消息所说,tuple 需要一个可迭代的参数。您可以通过将单个对象传递给元组来创建 single 对象的 contents 元组。您不能通过将它们作为单独的参数传递来创建两个事物的元组。

            只需执行(3, 4) 即可创建一个元组,就像您的第一个示例一样。没有理由不使用这种简单的语法来编写元组。

            【讨论】:

              猜你喜欢
              • 2018-10-04
              • 1970-01-01
              • 2020-01-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-10-09
              相关资源
              最近更新 更多