在Python中集合是如何工作的?

在Python中集合是如何工作的?,python,Python,为什么它会改变顺序?如果您查看一个循环,它可以完美地工作: >>> {x for x in 'spam'} {'a', 'p', 's', 'm'} set不是有序集合,因此,键的内部顺序未定义。set不是有序集合,因此,键的内部顺序未定义。From 集合对象是不同的散列对象的无序集合。常见的用途包括成员资格测试、从序列中删除重复项以及计算数学运算,如交集、并集、差分和对称差分。(有关其他容器,请参阅内置的dict、list和tuple类以及collections模块。) 从

为什么它会改变顺序?如果您查看一个循环,它可以完美地工作:

>>> {x for x in 'spam'}
{'a', 'p', 's', 'm'}

set
不是有序集合,因此,键的内部顺序未定义。

set
不是有序集合,因此,键的内部顺序未定义。

From

集合对象是不同的散列对象的无序集合。常见的用途包括成员资格测试、从序列中删除重复项以及计算数学运算,如交集、并集、差分和对称差分。(有关其他容器,请参阅内置的dict、list和tuple类以及collections模块。)

集合对象是不同的散列对象的无序集合。常见的用途包括成员资格测试、从序列中删除重复项以及计算数学运算,如交集、并集、差分和对称差分。(有关其他容器,请参阅内置的dict、list和tuple类以及collections模块。)

python(和中)中的集合没有顺序。因此,当您在它们上循环时,没有定义的顺序

您在字符串literal
'spam'
上循环,以创建一个包含该字符串中每个字符的集合。一旦你这么做了,订单就没有了

当您在
'spam'
上执行
循环时,您是在对具有顺序的字符串执行循环。

python中的集(和中的集)没有顺序。因此,当您在它们上循环时,没有定义的顺序

您在字符串literal
'spam'
上循环,以创建一个包含该字符串中每个字符的集合。一旦你这么做了,订单就没有了

当您在
'spam'
上执行
循环时,您是在对一个没有顺序的字符串执行循环。

集合
按定义是无序的。这样做的原因是,通过使用不保持顺序的适当数据结构,它们的实现以这种方式运行得更快。如果您需要订购,您可以使用(较慢的)OrderedDict类型。

set
s根据定义是无序的。这样做的原因是,通过使用不保持顺序的适当数据结构,它们的实现以这种方式运行得更快。如果您需要订购,您可以使用(较慢的)OrderedDict类型。

,这样Python就可以按照自己喜欢的方式(高效地,我按我)订购。

,这样Python就可以按照自己喜欢的方式(高效地,我按我)订购。

来自:

这些表示无序的、有限的、唯一的、不可变的对象集。因此,它们不能被任何下标索引[因为在元素之间没有定义顺序]。但是,它们可以被迭代,内置函数len()返回集合中的项数。集合的常见用途是快速成员资格测试、从序列中删除重复项以及计算数学运算,如交集、并集、差分和对称差分

但是如果你真的需要维持秩序,那么请检查

不管怎样,你可能真的喜欢只写集('spam')
,而不是任何理解。

来自:

这些表示无序的、有限的、唯一的、不可变的对象集。因此,它们不能被任何下标索引[因为在元素之间没有定义顺序]。但是,它们可以被迭代,内置函数len()返回集合中的项数。集合的常见用途是快速成员资格测试、从序列中删除重复项以及计算数学运算,如交集、并集、差分和对称差分

但是如果你真的需要维持秩序,那么请检查


无论如何,你可能真的喜欢只写
>>集('spam')
,而不是任何理解。

看看今天的另一个线程:看看今天的另一个线程:
>>> for x in 'spam':
...     print(x)
... 
s
p
a
m
>>>