集合 (set) 与列表 (list) 分类: python ...

集合 (set) 与列表 (list)

set 的 union, intersection,difference 操作要比 list 的迭代要快。因此如果涉及到求 list 交集,并集或者差的问题可以转换为 set 来操作。

set(list1) | set(list2)

union

包含list1和list2所有数据的新集合

set(list1) & set(list2)

intersection

包含list1和list2中共同元素的新集合

set(list1) - set(list2)

difference

在list1中出现但不在list2中出现的元素的集合

使用dict 和 set 测试成员

Python dict中使用了 hash table,因此查找操作的复杂度为 O(1),因此对成员的查找访问等操作字典要比 list 更快。

检查一个元素是在dicitonary或set是否存在,这在Python中非常快的。这是因为dict和set使用哈希表来实现,查找效率可以达到O(1),而 list 实际是个数组,在 list 中,查找需要遍历整个 list,其复杂度为 O(n),因此,如果您需要经常检查成员,使用 set 或 dict做为你的容器。

>>> mylist = ['a', 'b', 'c'] #Slower, check membership with list: 
>>> ‘c’ in mylist 
>>> True 
>>> myset = set(['a', 'b', 'c']) # Faster, check membership with set: 
>>> ‘c’ in myset: 
>>> True


=====

例子:

a1=[1,2,3,2,6]
a2=[2,4,3,5,3]

print set(a1) | set(a2)

print set(a1) & set(a2)

print set(a1)-set(a2)

print 1 in set(a1)#(增加预判断条件)可以先判断元素1是否在集合中,如果在,就执行下一步。

转载于:https://www.cnblogs.com/think1988/archive/2013/01/18/4628249.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值