Python set的高效利用

python set的应用  

找出两个list里面相同的元素

通常我都是这么做的:

>>> a = ["11","22","33"]
>>> b = ["11","33"]

>>> c = []
>>> for i in a:
...     if i in b:
...             c.append(i)
...
>>> c
['11', '33']

这样遍历两个表,效率好慢,现在遇到的问题是,两个list里的元素有好几百万个,用这样的方法去找出相同的元素,要跑好久啊。不过找到了一个简单的方法,并且好快,几百万的数据跑了几秒钟就搞定了,真是个好方法:

>>> a = ["11","22","33"]
>>> b = ["11","33"]
>>> c = set(a)&set(b)
>>> c
set(['11', '33'])

在网上也找了下例子,原来可以做不少的事啊:

>>> x = set('spam')
>>> y = set(['h','a','m'])
>>> x, y
(set(['a', 'p', 's', 'm']), set(['a', 'h', 'm']))

再来些小应用。

>>> x & y # 交集
set(['a', 'm'])

>>> x | y # 并集
set(['a', 'p', 's', 'h', 'm'])

>>> x - y # 差集
set(['p', 's'])


转载自http://zwlnecy.blog.163.com/blog/static/1608504820098283577786/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值