Python爬虫、数据分析与可视化:工具详解与案例实战
上QQ阅读APP看书,第一时间看更新

2.3.2 针对集合的常用数据操作

在数据分析的项目里,经常需要对不同的集合求交集、并集和差集等。此外,同样也可以通过in来遍历集合。在如下的SetUsage.py案例中,我们来看一下这些操作。


01 # coding=utf-8
02 # 以set的方式定义集合
03 setFromMem = set([10, 12, 14, 8])
04 setFromFile = set([10, 3, 8, 15])
05 # 演示遍历
06 for ele in setFromFile:
07     print(ele)
08 # 求交集
09 print(setFromMem & setFromFile) # {8, 10}
10 print(setFromMem.intersection(setFromFile)) # {8, 10}
11 # 求并集
12 # {3, 8, 10, 12, 14, 15}
13 print(setFromMem | setFromFile)
14 # {3, 8, 10, 12, 14, 15}
15 print(setFromMem.union(setFromFile))
16 # 求差集
17 print(setFromMem - setFromFile) # {12, 14}
18 print(setFromMem.difference(setFromFile)) # {12, 14}
19 print(setFromFile - setFromMem)    # {3, 15}

由于在本段代码里需要用中文写注释,因此在第1行指定了本段代码是用utf-8来编码。在第3行和第4行里,通过set来定义集合,这里其实是把列表转换成了set集合。

在第6行和第7行里,我们用for结合in的方式遍历集合,这种方式与遍历列表和元组时非常相似。在第9行和第10行里,通过&和intersection两种方式来求两个集合的交集,即求均存在于两个集合中的元素。

在第13行和第15行里,是通过|和union方法求并集,而在第17行和第18行里,则是通过-和difference方法求两个集合的差集。差集就是存在于一个集合但不存在于另一个集合中的元素,所以用第17行和第19行两种方法求出的差集结果不同。