在列表中添加一个元组 - 两种方式之间的区别是什么?

时间:2015-07-02 03:43:03

标签: python list types append tuples

我写了第一篇" Hello World" 4个月前。从那时起,我一直在学习莱斯大学提供的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

顺便说一句:我使用了CodeSkulptor coding tool used in the course

5 个答案:

答案 0 :(得分:40)

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

  

tuple([iterable])

     

返回一个元组,其元素与iterable的项目相同且顺序相同。

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

例如

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

将起作用

答案 1 :(得分:8)

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

tuple([3, 4])

(3, 4)

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

答案 2 :(得分:1)

应该没有区别,但你的元组方法是错误的,试试:

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

答案 3 :(得分:1)

它与append无关。所有tuple(3, 4)都会引发错误。

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

只需按(3, 4)制作元组,就像在第一个示例中一样。没有理由不使用这种简单的语法来编写元组。

答案 4 :(得分:1)

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

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

看看如果用括号包装数组会发生什么