What#39;s the algorithm of #39;set.intersection()#39; in python?(python中set.intersection()的算法是什么?)
问题描述
首先,我的目的是在两个已知集合中随机获取一个元素.所以我原来的方法是先相交两组.然后从相交集中随机选取一个元素.但这是愚蠢的,因为我只需要一个元素,但需要一个相交集.
First of all, my purpose is to randomly get only one element in both known sets. So my original method is firstly intersect two sets. And then randomly pick up a element from the intersected set. But this is foolish, because that I only need a elements but a intersected set.
所以我需要找到set.intersection()的算法.
So I need to find the algorithm of set.intersection().
我比较了 'set.intersection()' 和 'for{for{}}' 方法的成本时间.Set.intersection() 比其他更快(100 倍).所以使用'for{for{}}'来随机选取一个元素并不是一个明智的主意.
I compare the cost time between the methods of 'set.intersection()' and 'for{for{}}'. Set.intersection() is more faster than other one(100 times). So using 'for{for{}}' to pick up a randomly elements is not a wise idea.
python 中 set.intersection() 背后的算法是什么?
What's the algorithm behind set.intersection() in python?
推荐答案
算法如下:循环遍历较小的集合,并根据是否在较大的集合中找到每个元素来复制每个元素.所以,它是 C 的等价物
The algorithm is as follows: the smaller set is looped over and every element is copied depending whether it's found in the bigger set. So, it's the C equivalent of
def intersect(a, b):
if len(a) > len(b):
a, b = b, a
c = set()
for x in a:
if x in b:
c.add(x)
return c
(或者:return set(x for x in a if x in b)
.)
这篇关于python中'set.intersection()'的算法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:python中'set.intersection()'的算法是什么?


- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01