Python——集合是一个非常之牛逼的数据比较方式

 

    什么是集合?对似懂非懂或者被集合搞晕了的同学可以来看一下。
    首先不想说太多概念性的东西,免得又晕了!

    请看下面我写的例子,看完之后自然就知道啥是集合以及如何去应用它

<span style="color:#333333"><span style="color:black"><code class="language-python"><span style="color:slategray">#变量a是一个集合类型</span>
a <span style="color:#9a6e3a">=</span> <span style="color:#669900">set</span><span style="color:#999999">(</span><span style="color:#999999">)</span>
<span style="color:#0077aa">print</span><span style="color:#999999">(</span><span style="color:#669900">type</span><span style="color:#999999">(</span>a<span style="color:#999999">)</span><span style="color:#999999">)</span>

<span style="color:slategray">#定义一个列表,并存入很多重复的数字</span>
dt <span style="color:#9a6e3a">=</span> <span style="color:#999999">[</span><span style="color:#990055">12</span><span style="color:#999999">,</span><span style="color:#990055">9</span><span style="color:#999999">,</span><span style="color:#990055">2</span><span style="color:#999999">,</span><span style="color:#990055">8</span><span style="color:#999999">,</span><span style="color:#990055">4</span><span style="color:#999999">,</span><span style="color:#990055">9</span><span style="color:#999999">,</span><span style="color:#990055">2</span><span style="color:#999999">,</span><span style="color:#990055">7</span><span style="color:#999999">,</span><span style="color:#990055">4</span><span style="color:#999999">,</span><span style="color:#990055">5</span><span style="color:#999999">,</span><span style="color:#990055">6</span><span style="color:#999999">,</span><span style="color:#990055">11</span><span style="color:#999999">,</span><span style="color:#990055">5</span><span style="color:#999999">,</span><span style="color:#990055">7</span><span style="color:#999999">,</span><span style="color:#990055">5</span><span style="color:#999999">,</span><span style="color:#990055">7</span><span style="color:#999999">,</span><span style="color:#990055">9</span><span style="color:#999999">,</span><span style="color:#990055">8</span><span style="color:#999999">,</span><span style="color:#990055">7</span><span style="color:#999999">,</span><span style="color:#990055">2</span><span style="color:#999999">]</span>
<span style="color:#0077aa">for</span> i <span style="color:#0077aa">in</span> dt<span style="color:#999999">:</span> <span style="color:slategray">#遍历列表</span>
    a<span style="color:#999999">.</span>add<span style="color:#999999">(</span>i<span style="color:#999999">)</span> <span style="color:slategray">#将列表中的每一个元素添加进集合</span>

<span style="color:slategray">#打印集合,发现,自动去掉重复的数字了</span>
<span style="color:#0077aa">print</span><span style="color:#999999">(</span>a<span style="color:#999999">)</span>

<span style="color:slategray">#5存在于集合中吗?</span>
<span style="color:#0077aa">print</span><span style="color:#999999">(</span><span style="color:#990055">5</span> <span style="color:#0077aa">in</span> a<span style="color:#999999">)</span>

<span style="color:slategray">#遍历集合</span>
<span style="color:#0077aa">for</span> item <span style="color:#0077aa">in</span> a<span style="color:#999999">:</span>
    <span style="color:#0077aa">print</span><span style="color:#999999">(</span>item<span style="color:#999999">)</span>

<span style="color:slategray">#将集合转化成列表</span>
set_list <span style="color:#9a6e3a">=</span> <span style="color:#669900">list</span><span style="color:#999999">(</span>a<span style="color:#999999">)</span>
<span style="color:#0077aa">print</span><span style="color:#999999">(</span>set_list<span style="color:#999999">)</span>
<span style="color:#0077aa">print</span><span style="color:#999999">(</span><span style="color:#669900">type</span><span style="color:#999999">(</span>set_list<span style="color:#999999">)</span><span style="color:#999999">)</span></code></span></span>
 

 

那么,集合还涉及到下面几个牛逼的玩意:

并集:
    它将两个集合作为参数,并返回一个包含全部存在于两个集合中任意一个的元素的新集合,用union()方法, 操作符是:"|"
交集:
    它接收第2个集合为参数,返回的是仅包含同时存在于两个集合的那些元素,intersection方法实现,操作符是:"&"
差集:
    它告诉我们哪些是剩下的元素,它是一个存储于或是存在于这个集合或是另一个集合,但不是同时存在于两个集合的对象的集合
    symmetric_difference方法实现,操作符是:"-"

 

继续看例子

<span style="color:#333333"><span style="color:black"><code class="language-python">a <span style="color:#9a6e3a">=</span> <span style="color:#999999">{</span><span style="color:#990055">1</span><span style="color:#999999">,</span><span style="color:#990055">2</span><span style="color:#999999">,</span><span style="color:#990055">3</span><span style="color:#999999">,</span><span style="color:#990055">4</span><span style="color:#999999">,</span><span style="color:#990055">5</span><span style="color:#999999">}</span>
b <span style="color:#9a6e3a">=</span> <span style="color:#999999">{</span><span style="color:#990055">6</span><span style="color:#999999">,</span><span style="color:#990055">2</span><span style="color:#999999">,</span><span style="color:#990055">3</span><span style="color:#999999">,</span><span style="color:#990055">7</span><span style="color:#999999">}</span>

<span style="color:slategray">#求a和b的并集,将两组数据中共同存在的数字去除掉后,生成一个不存在重复数字的新集合</span>
<span style="color:#0077aa">print</span><span style="color:#999999">(</span>a<span style="color:#999999">.</span>union<span style="color:#999999">(</span>b<span style="color:#999999">)</span><span style="color:#999999">)</span>

<span style="color:slategray">#求a和b的交集,将两组数据中共有的数字提取出来,并生成一个新的集合,让我们知道这两组数据中哪些数字都存在于两组数据里</span>
<span style="color:#0077aa">print</span><span style="color:#999999">(</span>a<span style="color:#999999">.</span>intersection<span style="color:#999999">(</span>b<span style="color:#999999">)</span><span style="color:#999999">)</span>

<span style="color:slategray">#求a和b的差集,将两组数据中所没有的数字提取出来后,生成一个新的集合</span>
<span style="color:#0077aa">print</span><span style="color:#999999">(</span>a<span style="color:#999999">.</span>symmetric_difference<span style="color:#999999">(</span>b<span style="color:#999999">)</span><span style="color:#999999">)</span>

<span style="color:slategray">#注意:他们的结果取决于谁是调用者,谁是参数,上面的3条例子中,a集合是调用者,b集合是参数</span>

<span style="color:slategray">#a集合中的所有数字都存在于b集合的话,则返回true, a是调用者,b是参数</span>
<span style="color:#0077aa">print</span><span style="color:#999999">(</span>a<span style="color:#999999">.</span>issubset<span style="color:#999999">(</span>b<span style="color:#999999">)</span><span style="color:#999999">)</span>

<span style="color:slategray">#b集合作为参数,b集合中的所有元素都存在于a集合中的话,返回true</span>
<span style="color:#0077aa">print</span><span style="color:#999999">(</span>a<span style="color:#999999">.</span>issuperset<span style="color:#999999">(</span>b<span style="color:#999999">)</span><span style="color:#999999">)</span>

<span style="color:slategray">#想要知道全部只存在于a集合而不存在于b集合的元素</span>
<span style="color:#0077aa">print</span><span style="color:#999999">(</span>a<span style="color:#999999">.</span>difference<span style="color:#999999">(</span>b<span style="color:#999999">)</span><span style="color:#999999">)</span> <span style="color:slategray">#结果是1,4,5</span>
<span style="color:slategray">#反之</span>
<span style="color:#0077aa">print</span><span style="color:#999999">(</span>b<span style="color:#999999">.</span>difference<span style="color:#999999">(</span>a<span style="color:#999999">)</span><span style="color:#999999">)</span> <span style="color:slategray">#结果是6和7</span></code></span></span>
 

 

总结:
    通过测试说明,集合可以用来操作另一个集合,集合不仅仅只是一个容器
    那么,应用场景一般有如下:
        1、对两处不同的数据,如果要快速的结合起来去做分析,那么请用集合
        2、那么快速的结合起来的目的一般是干嘛呢?,比如想知道两处数据中哪些是重复的,哪些是不同的
        
因此:
    集合是一个非常之牛逼的数据比较方式

发布了81 篇原创文章 · 获赞 109 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/ooooooobh/article/details/105392625