这个在python中调用的构造是什么:(x,y)

时间:2009-08-21 19:27:04

标签: python

在python中调用的是什么:

[('/', MainPage)]

那是......一个字典的数组吗?

那是

()

一个元组? (或者他们称之为什么?)

9 个答案:

答案 0 :(得分:14)

它是一个包含单个元组的列表。

答案 1 :(得分:6)

因为还没有人回答这个问题:

  

一个元组? (或者他们称之为什么?)

“元组”这个词来自数学。在数学中,如果我们做二维几何,我们可能会讨论(有序)对。转向三维意味着我们需要三元组。在更高的维度中,我们需要四倍,五倍,以及呃,无论前缀是六个,依此类推。这开始变得痛苦,数学家也喜欢泛化(“让我们今天在n维工作!”),所以他们开始使用术语“n-tuple”作为n个事物(通常是数字)的有序列表。 / p>

在那之后,你需要一点点自然的懒惰来放弃“n-”,我们最终会得到元组。

答案 2 :(得分:3)

请注意:

("is not a tuple")

元组由逗号定义,除了零长度元组的情况。这样:

"is a tuple",

因为最后的逗号。括号只是强制执行分组(再次,除了零长度元组的情况。

答案 3 :(得分:2)

这是一个元组列表。

这是一个整数列表:[1, 2, 3, 4, 5]

这也是一个整数列表:[1]

这是一个(字符串,整数)元组:("hello world", 42)

这是(字符串,整数)元组的列表:[("a", 1), ("b", 2), ("c", 3)]

这就是:[("a", 1)]

在Python中,列表和元组之间没有太大区别。但是,它们在概念上是不同的。想到它的一种简单方法是列表包含许多相同类型的项(同类),而元组包含固定数量的不同类型的项(异构)。记住这一点的一个简单方法是列表可以附加到,而元组则不能,因为附加到列表是有意义的,并且附加到元组不会。

Python没有强制实施这些区别 - 在Python中,您可以使用+附加到元组,或者将异构类型存储在列表中。

答案 4 :(得分:1)

是的,它是tuple

他们看起来像这样:

()
(foo,)
(foo, bar)
(foo, bar, baz)

答案 5 :(得分:1)

[('/', MainPage)]

这是一个由两个元素元组组成的列表。

()

这是一个零元素元组。

答案 6 :(得分:1)

这是一个元组列表。您可以通过

验证
x=[('/', MainPage)]
print type(x) # You will find a <list> type here
print type(x[0]) # You will find a <tuple> type here

您可以使用此代码从此类型的结构(可能是列表中的更多元组)构建字典

my_dict = dict(x) # x=[('/',MainPage)]

答案 7 :(得分:0)

这是一个包含一个元组的元组列表。

元组就像一个列表,除了它是不可变的,这意味着它一旦创建就无法更改。您无法添加,删除或更改元组中的元素。如果您希望元组不同,则必须使用新数据创建新元组。这可能听起来很痛苦,但实际上元组在代码安全性和速度方面都有很多好处。

答案 8 :(得分:0)

这只是一个元组列表。该元组有两个元素,一个字符串和对象MainPage无论它是什么。

列表元组都是有序的对象组,无论哪种对象都无关紧要,它们在两种情况下都可以是异构的。

列表和元组之间的主要区别在于元组是不可变的 ,就像字符串一样。

例如,我们可以定义一个列表和一个元组:

>>> L = ['a', 1, 5, 'b']
>>> T = ('a', 1, 5, 'b')

我们可以通过为它们分配一个新值来修改L的元素

>>> print L
['a', 1, 5, 'b']
>>> L[1] = 'c'
>>> print L
['a', 'c', 5, 'b']

对于元组

,情况并非如此
>>> print T
('a', 1, 5, 'b')
>>> T[1] = 'c'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

这是因为它们是不可变的。 元组的元素可能是可变的,您可以修改它们,例如:

>>> T = (3, ['a', 1, 2], 'lol')
>>> T[1]
['a', 1, 2]
>>> T[1][0] = 'b'
>>> T
(3, ['b', 1, 2], 'lol')

但是我们编辑的列表仍然是同一个对象,我们没有替换元组的元素。