python set有序吗

Python的set是一个无序且无重复元素的集合,概念上相当于数学上的无序集,数据结构上相当于dict的键。

既然set是集合,则必然可以实现并、交、差、对称差等集合运算。

set是一组无序排列的可哈希的值,因此可以用作字典中的键。set和之前介绍的list、tuple、dict等一样,可以使用in操作符检查元素是否在集合中存在,使用len()求得集合元素的个数,使用for循环迭代其成员,使用copy()返回一个浅复制。不同之处在于集合本身无序,所以没有索引,就不能实现索引和切片操作。

set具有以下特性:

·元素不重复出现

·元素必须是不可变对象

你可以把set当作是dict中的键来理解,当然仅仅限于数据结构层面。

在Python中set的底层结构和字典是完全一样的都是哈希表,就当成是只有键没有值的字典就可以了。

Python 早期版本就没有set这个类型,那时候开发者都是直接建一个 {key1:None, key2:None}的字典来实现set的功能。

字典和set都是用空间来换时间,空间浪费很大。

set的用途是解决了判断某个元素在集合中出现的查找效率问题。 

>>> timeit.timeit(stmt='10**4 in s',setup='s=range(10**5)', number=10**5)
13.447274759909192
>>> timeit.timeit(stmt='10**4 in s',setup='s=set(xrange(10**5))', number=10**5)
0.006686778187940945
>>>

list的实现方式是链表,空间利用率高追加元素快而方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hakesashou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值