在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
>>>