python中'set.intersection()'的算法是什么?

2023-07-03Python开发问题
10

本文介绍了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()'的算法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

在xarray中按单个维度的多个坐标分组
groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)...
2024-08-22 Python开发问题
15

Pandas中的GROUP BY AND SUM不丢失列
Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)...
2024-08-22 Python开发问题
17

GROUP BY+新列+基于条件的前一行抓取值
Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)...
2024-08-22 Python开发问题
18

PANDA中的Groupby算法和插值算法
Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)...
2024-08-22 Python开发问题
11

PANAS-基于列对行进行分组,并将NaN替换为非空值
Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)...
2024-08-22 Python开发问题
10

按10分钟间隔对 pandas 数据帧进行分组
Grouping pandas DataFrame by 10 minute intervals(按10分钟间隔对 pandas 数据帧进行分组)...
2024-08-22 Python开发问题
11