龙空技术网

python之集合创建

不寐旋律 114

前言:

此刻朋友们对“两个集合相并”大约比较关注,朋友们都想要了解一些“两个集合相并”的相关知识。那么小编也在网络上网罗了一些对于“两个集合相并””的相关资讯,希望小伙伴们能喜欢,我们快快来学习一下吧!

#挑战30天在头条写日记#

集合集合 set集合与元组和列表相似都用于做容器,在内部可以放一些子元素集合有三特殊特点: 子元素不重复子元素必须可哈希无序

提示:目前可哈希的数据类型 int/str/tuple;不可哈希的类型 dict/list/set

常用方法创建集合

set01 = {4, 5, 6, 7}set02 = {"Tom", "Jerry", "Spike", "Tyke"}set03 = {3.14, 2.71, "hello", (44, 55, 66)}

集合与字典虽然都是用{}括号,但字典内部是键值对,而集合内部直接是值。

集合类型操作符集合支持用 innot in 操作符检查成员能够通过 len() 检查集合大小能够使用 for 迭代集合成员不能取切片,没有键

【集合支持以下操作符和函数:】1. 成员检查:可以使用 `in` 和 `not in` 操作符检查集合中是否存在特定元素。例如:my_set = {1, 2, 3}if 1 in my_set:print("1 is in the set")2. 集合大小:可以使用 `len()` 函数获取集合的大小(即元素的数量)。例如:my_set = {1, 2, 3}print(len(my_set))  # 输出:33. 迭代集合:可以使用 `for` 循环迭代集合中的元素。例如:my_set = {1, 2, 3}for item in my_set:print(item)4. 集合运算:可以使用集合运算符如 `union()`(并集)、`intersection()`(交集)、`difference()`(差集)和 `symmetric_difference()`(对称差集)来操作集合。例如:set1 = {1, 2, 3}set2 = {2, 3, 4}print(set1.union(set2))       # 输出:{1, 2, 3, 4}print(set1.intersection(set2))  # 输出:{2, 3}print(set1.difference(set2))   # 输出:{1}print(set1.symmetric_difference(set2))  # 输出:{1, 4}5. 其他函数:还可以使用其他函数如 `issubset()`(子集检查)、`issuperset()`(超集检查)和 `clear()`(清空集合)等。例如:set1 = {1, 2, 3}set2 = {2, 3, 4}print(set1.issubset(set2))   # 输出:Trueprint(set1.issuperset(set2))  # 输出:Falseset1.clear()print(set1)  # 输出:set()6.需要注意的是,集合不支持取切片操作,也没有键的概念。
添加元素 add()
data = {"老大", '老二', "老三"}data.add("老四")print(data)
删除元素

remove()

从集合中移除一个元素;它 必须 是一个成员。如果元素不是成员,则引发 KeyError

data = {"老大", '老二', "老三"}data.add("老二")print(data)
交集

图例

s1 = {"苹果", "香蕉", "橘子"}  s2 = {"香蕉", "草莓", "樱桃"}  s3 = s1 & s2  # 方式一:取两个集合的交集  s4 = s1.intersection(s2) # 方式二:取两个集合的交集  print(s3, s4)
并集

图例

s1 = {"张三", "李四", "王五"}s2 = {"张三", "赵六", "孙七"}s3 = s1 | s2 # 方式一:取两个集合的并集s4 = s1.union(s2) # 方式二:取两个集合的并集print(s3, s4)
差集

图例

s1 = {"张三", "李四", "王五"}s2 = {"张三", "赵六", "孙七"}s3 = s1 - s2 # 方式一:差集,s1中有且s2中没有的值s4 = s1.difference(s2) # 方式二:差集,s1中有且s2中没有的值print(s3, s4)

图例

s1 = {"张三", "李四", "王五"}s2 = {"张三", "赵六", "孙七"}s3 = s2 - s1 # 方式一:差集,s2中有且s1中没有的值s4 = s2.difference(s1) # 方式二:差集,s2中有且s1中没有的值print(s3, s4)
其他其他类型如果想要转换为集合类型,可以通过 set进行转换,并且如果数据有重复则 自动去重提示:list/tuple/dict 都可以转换为集合。
v1 = [10, 20, 30, 10, 5, 88, 20]v2 = set(v1)print(v2) # {10,20,30,5,88}print(list(v2)) # 再将set转换成list类型
练习:比较文件内容

需求

有两个文件:file1.txt 和 file2.txt两个文件中有大量重复内容取出只有在 file2.txt 中存在的行

# 定义变量,指定要操作的文件路径  file1 = '/path/to/file1.txt' # 要读取的第一个文件路径  file2 = '/path/to/file2.txt' # 要读取的第二个文件路径    # 将对象fobj1转换为集合类型(集合中的元素无序排列,且不会重复)  # 读取file1中的所有行,并去除重复行,存入aset集合中  with open(file1, mode="r") as fobj1:      aset = set(fobj1.readlines())    # 将对象fobj2转换为集合类型(集合中的元素无序排列,且不会重复)  # 读取file2中的所有行,并去除重复行,存入bset集合中  with open(file2, mode="r") as fobj2:      bset = set(fobj2.readlines())    # 打印在bset中存在但在aset中不存在的行  print(bset - aset)
延展

需求

找到了在第二个文件中存在但在第一个文件中不存在的行将这些行写入到一个新的文件中方便将结果保存下来,以供后续分析和处理。

# 定义变量,指定要操作的文件路径  file1 = '/path/to/file1.txt' # 要读取的第一个文件路径  file2 = '/path/to/file2.txt' # 要读取的第二个文件路径  file3 = '/path/to/file3.txt' # 要写入结果的文件路径    # 将对象fobj1转换为集合类型(集合中的元素无序排列,且不会重复)  # 读取file1中的所有行,并去除重复行,存入aset集合中  with open(file1, mode="r") as fobj1:      aset = set(fobj1.readlines())    # 将对象fobj2转换为集合类型(集合中的元素无序排列,且不会重复)  # 读取file2中的所有行,并去除重复行,存入bset集合中  with open(file2, mode="r") as fobj2:      bset = set(fobj2.readlines())    # 找出在bset中存在但在aset中不存在的行,并写入到file3中  with open(file3, mode="w") as fobj3:      for line in bset - aset:          fobj3.write(line)

标签: #两个集合相并