当我做这样的事情:是否将列表转换为集会更改元素的顺序?
U = [(1.0, 0.0), (0.0, 1.0)]
set(U)
它给我:
{(0.0, 1.0), (1.0, 0.0)}
我只想列表转换成一组。任何帮助?
谢谢
当我做这样的事情:是否将列表转换为集会更改元素的顺序?
U = [(1.0, 0.0), (0.0, 1.0)]
set(U)
它给我:
{(0.0, 1.0), (1.0, 0.0)}
我只想列表转换成一组。任何帮助?
谢谢
套件没有订购。字典也没有订购。如果你想保留一个特定的订单,然后使用一个列表。
>>> ''.join(set("abcdefg"))
'acbedgf'
>>> ''.join(set("gfedcba"))
'acbedgf'
>>> ''.join(set("1234567"))
'1325476'
>>> ''.join(set("7654321"))
'1325476'
显然,当你遍历一组一些种为了有出来。但是这个顺序是一个你无法指定的任意顺序。
这里是我最喜欢的:
>>> {'apple', 'banana'}
{'banana', 'apple'}
>>> {'banana', 'apple'}
{'apple', 'banana'}
顺序由哈希冲突的影响,所以它不仅依赖于集的内容,但插入的太顺序。但你无法控制订单。
我认为让OP感到困惑的是他们认为元组内部元素的顺序已经重新排列(因为这两个元组是对称的)。你可能想解释一下。 – jurgenreza 2013-04-04 00:14:11
@jurgenreza:你知道,向OP解释事情要比为了让他们解释它而随意乱搞其他人更有效率。无论如何,我认为你是对的。 – 2013-04-04 00:15:30
耶稣!我的意思是没有冒犯,我认为,因为你的答案是完整的,你可能想要添加一条线。真是一种态度! – jurgenreza 2013-04-04 00:18:13
我认为令你困惑的是元组的对称性。将列表转换为集不会影响元组中项目的排列,而不会影响元组的顺序。那是因为集合本质上是无序的。这是另一个非对称元组的例子。
>>> U = [(2.0, 0.0), (0.0, 1.0)]
>>> set(U)
{(0.0, 1.0), (2.0, 0.0)}
这是一个元组列表。 – squiguy 2013-04-03 23:58:51
通过“改变序列”,你的意思是“改变顺序”?集合没有订单,它们显示和/或迭代的顺序完全是任意的。 – DSM 2013-04-04 00:00:17
'集合'本质上是无序的。 – FatalError 2013-04-04 00:00:23