我写了第一篇" 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
答案 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)
看看如果用括号包装数组会发生什么