Python 将元组附加到列表 - 两种方式有什么区别?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/31175223/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Append a tuple to a list - what's the difference between two ways?
提问by Skywalker326
I wrote my first "Hello World" 4 months ago. Since then, I have been following a Coursera Python course provided by Rice University. I recently worked on a mini-project involving tuples and lists. There is something strange about adding a tuple into a list for me:
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
It's quite confusing for me. Why specifying the tuple to be appended by using "tuple(...)" instead of simple "(...)" will cause a ValueError
?
这对我来说很混乱。为什么通过使用“tuple(...)”而不是简单的“(...)”来指定要附加的元组会导致ValueError
?
BTW: I used CodeSkulptor
coding tool used in the course
采纳答案by Bhargav Rao
The tuple
function takes only one argument which has to be an iterable
该tuple
函数只接受一个必须是可迭代的参数
tuple([iterable])
Return a tuple whose items are the same and in the same order as iterable‘s items.
tuple([iterable])
返回一个元组,其项目与可迭代的项目相同且顺序相同。
Try making 3,4
an iterable by either using [3,4]
(a list) or (3,4)
(a tuple)
尝试3,4
使用[3,4]
(列表)或(3,4)
(元组)制作可迭代对象
For example
例如
a_list.append(tuple((3, 4)))
will work
将工作
回答by 101
There should be no difference, but your tuple method is wrong, try:
应该没有区别,但是你的元组方法是错误的,试试:
a_list.append(tuple([3, 4]))
回答by BrenBarn
It has nothing to do with append
. tuple(3, 4)
all by itself raises that error.
它与append
. tuple(3, 4)
所有本身都会引发该错误。
The reason is that, as the error message says, tuple
expects an iterable argument. You can make a tuple of the contentsof a singleobject by passing that single object to tuple. You can't make a tuple of two things by passing them as separate arguments.
原因是,正如错误消息所说,tuple
需要一个可迭代的参数。您可以通过将单个对象传递给元组来创建单个对象内容的元组。您不能通过将它们作为单独的参数传递来创建两个事物的元组。
Just do (3, 4)
to make a tuple, as in your first example. There's no reason not to use that simple syntax for writing a tuple.
就像(3, 4)
在你的第一个例子中那样做一个元组。没有理由不使用这种简单的语法来编写元组。
回答by brainless coder
Because tuple(3, 4)
is not the correct syntax to create a tuple. The correct syntax is -
因为tuple(3, 4)
不是创建元组的正确语法。正确的语法是——
tuple([3, 4])
or
或者
(3, 4)
You can see it from here - https://docs.python.org/2/library/functions.html#tuple
你可以从这里看到它 - https://docs.python.org/2/library/functions.html#tuple
回答by Ashwin Reddy
I believe tuple()
takes a list as an argument
For example,
我相信tuple()
将列表作为参数例如,
tuple([1,2,3]) # returns (1,2,3)
see what happens if you wrap your array with brackets
看看如果你用括号包裹你的数组会发生什么