将列表转换为集合是否会更改元素的顺序?

时间:2013-04-03 23:58:19

标签: python list set

当我做类似的事情时:

U = [(1.0, 0.0), (0.0, 1.0)]
set(U)

它给了我:

{(0.0, 1.0), (1.0, 0.0)}

我只想将列表转换为集合。有什么帮助吗?

由于

2 个答案:

答案 0 :(得分:3)

未订购套装。字典也没有订购。如果要保留特定订单,请使用列表。

>>> ''.join(set("abcdefg"))
'acbedgf'
>>> ''.join(set("gfedcba"))
'acbedgf'
>>> ''.join(set("1234567"))
'1325476'
>>> ''.join(set("7654321"))
'1325476'

显然,当你迭代一套某种时,必须出现一种秩序。但订单是一个您无法指定的任意订单。

这是我的最爱:

>>> {'apple', 'banana'}
{'banana', 'apple'}
>>> {'banana', 'apple'}
{'apple', 'banana'}

顺序受哈希冲突的影响,因此它不仅取决于集合的内容,还取决于插入的顺序。但是你无法真正控制订单。

答案 1 :(得分:0)

我认为令人困惑的是元组的对称性。将列表转换为集合并不影响元组中项目的排列,而是影响元组的顺序。那是因为集合本质上是无序的。这是另一个不对称元组的例子。

>>> U = [(2.0, 0.0), (0.0, 1.0)]
>>> set(U)
{(0.0, 1.0), (2.0, 0.0)}