Python tuple():它何时重新排序?
我正在使用Python3.7,但在tuple()中感到困惑。有时会对数据进行重新排序,有时则不会:Python tuple():它何时重新排序?,python,set,Python,Set,我正在使用Python3.7,但在tuple()中感到困惑。有时会对数据进行重新排序,有时则不会: >>> a=tuple([2, 1, 3]) >>> print(a) (2, 1, 3) <== the tuple from list is not re-ordered >>> s={2, 1, 3} >>> b=tuple(s) >>> print(b) (1, 2, 3) <=
>>> a=tuple([2, 1, 3])
>>> print(a)
(2, 1, 3) <== the tuple from list is not re-ordered
>>> s={2, 1, 3}
>>> b=tuple(s)
>>> print(b)
(1, 2, 3) <== the tuple from set is re-ordered
>>> print(tuple({10, 5, 30}))
(10, 5, 30) <== the tuple from set is not re-ordered
>>> print(s)
{1, 2, 3} <== the set itself is re-ordered
>a=元组([2,1,3])
>>>印刷品(a)
(2,1,3)>>s={2,1,3}
>>>b=元组(s)
>>>印刷品(b)
(1,2,3)>>打印(元组({10,5,30}))
(10,5,30)>>打印
{1,2,3}根据定义,元组是一种有序的数据结构,其构造函数是tuple()
在您的例子中,如果您使用的是{}
,它不是一个元组,而是一个集合,因此不是有序的
您可以找到官方的python教程。在5.3中,它们还专门处理元组根据定义,元组是一个有序的数据结构,它们的构造函数是tuple()
在您的例子中,如果您使用的是{}
,它不是一个元组,而是一个集合,因此不是有序的
您可以找到官方的python教程。在5.3中,它们也专门处理元组,一个集合是无序的,一个列表是有序的。因此,tuple(a_列表)
保留列表的顺序,但tuple(a_集合)
没有规定的顺序可遵循。集合无序,列表有序。因此tuple(a_列表)
保留列表的顺序,但tuple(a_集)
没有规定的顺序。如您共享的链接中所述:
构造函数构建一个元组,其项与iterable的项相同且顺序相同
由于set
是按定义不排序的,因此如果将set
传递为iterable totuple()
函数,则无法知道/保证顺序。如您共享的链接中所述:
构造函数构建一个元组,其项与iterable的项相同且顺序相同
因为set
根据定义是无顺序的,如果将set
传递为iterable totuple()
函数,则无法知道/保证顺序。集合已经重新排序,与tuple无关。{10,5,30}
恰好是按10,5,30}排序的,30
元组
从不重新排序数据set
对象本质上是无序的。集合已经被重新排序,与元组无关。{10,5,30}
恰好被排序为10,5,30
元组
从不重新排序数据set
对象本身就是无序的{a:b}
构造一个字典<代码>{a,b}构造一个集合。用花括号表示哪个词从来没有歧义。()
不是元组构造函数,它是元组文本的一部分,与{}
一样,使用术语“构造函数”来描述文本是误导性的,因为不涉及函数调用。同样,也可以用于形成表达式,例如(x-1)*x
,元组可以不使用括号形成,例如t=0,1
。谢谢,您的答案是100%正确的,只是让它更具体。wjandrea,谢谢你的澄清。一个文本仍然会导致Python引擎构造对象,不是吗?@Axblert是的,那么Udacity课程就是错误的。但是感谢您对反馈的回复。{a:b}
构建了一个字典<代码>{a,b}构造一个集合。用花括号表示哪个词从来没有歧义。()
不是元组构造函数,它是元组文本的一部分,与{}
一样,使用术语“构造函数”来描述文本是误导性的,因为不涉及函数调用。同样,也可以用于形成表达式,例如(x-1)*x
,元组可以不使用括号形成,例如t=0,1
。谢谢,您的答案是100%正确的,只是让它更具体。wjandrea,谢谢你的澄清。一个文本仍然会导致Python引擎构造对象,不是吗?@Axblert是的,那么Udacity课程就是错误的。但感谢您对反馈做出回应。