Python - 集合与元素之集合定义和基本操作方法
集合(set)
定义:由不同元素组成的集合,集合中是一组无序排列可hash的值(不可变的值)例如数字、字符串、元组,可以作为字典的key
定义集合:
# 定义集合
s = {1, 2, 3, 3, 3, 4, 5}
print(s)
print(type(s))
输出:
{1, 2, 3, 4, 5}
<class 'set'>
定义可变集合set
# 定义可变集合
s = set("hello") # ()内为可迭代类型
print(s)
输出:
{'l', 'h', 'o', 'e'}
定义不可变集合
# 定义不可变集合
s = frozenset("hello") # ()内为可迭代类型
print(s)
输出:
frozenset({'l', 'h', 'e', 'o'})
集合关系运算(方法)
1、intersection()
num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求交集
print(num1.intersection(num2))
# 相当于
print(num1 & num2)
输出:
{2, 3}
{2, 3}
2、union()
num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求并集
print(num1.union(num2))
# 相当于
print(num1 | num2
输出:
{1, 2, 3, 4}
{1, 2, 3, 4}
3、difference()
num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求差集
print(num1.difference(num2)) # 输出num1中有num2中没有的
# 相当于
print(num1 - num2)
输出:
{1}
{1}
4、symmetric_difference()
num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求交差补集
print(num1.symmetric_difference(num2)) # 并集合交集的差集
# 相当于
print(num1 ^ num2)
输出:
{1, 4}
{1, 4}
方法
1、add()
s = {1, 2, 3, 4}
# 添加一个元素
s.add((1, 2))
s.add(1)
print(s)
输出:
{(1, 2), 1, 2, 3, 4}
2、clear()
3、copy()
4、pop()(随机删除)
s = {1, 2, 3, 4, "Aiden", 5, 6, 7, 8}
# 随机删除
s.pop()
print(s)
输出:
{1, 2, 3, 4, 5, 6, 7, 8}
5、remove()
s = {1, 2, 3, 4, "Aiden", 5, 6, 7, 8}
# 指定元素删除
s.remove(3) # 指定的元素不存在会报错
print(s)
输出:
{'Aiden', 1, 2, 4, 5, 6, 7, 8}
6、discard()
s = {1, 2, 3, 4, "Aiden", 5, 6, 7, 8}
# 指定元素删除
s.discard(3) # 指定的元素不存在不会报错
print(s)
s.discard(12)
print(s)
输出:
{1, 2, 4, 5, 6, 7, 8, 'Aiden'}
7、difference_update()
num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求完num1和num2的差集后自动复制给num1
num1.difference_update(num2)
print(num1)
输出:
{1}
8、intersection_update()
num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求完num1和num2的交集后自动复制给num1
num1.intersection_update(num2)
print(num1)
输出:
{2, 3}
9、isdisjoint()
num1 = {1, 2}
num2 = {3, 4}
# 判断两个集合是否互斥
print(num1.isdisjoint(num2))
输出:
True
10、issubset()
num1 = {1, 2}
num2 = {1, 2, 3}
# 判断num1是否为num2的子集
print(num1.issubset(num2)) # 相当于print(num1 <= num2)
输出:
True
11、issuperset()
num1 = {1, 2}
num2 = {1, 2, 3}
# 判断num2是否为num1的父集
print(num2.issuperset(num1)) # 相当于print(num2 >= num1)
输出:
True
12、symmetric_difference_update()
num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求交差补集并把结果赋给num1
num1.symmetric_difference_update(num2)
print(num1)
输出:
{1, 4}
13、update()
num1 = {1, 2, 3}
num2 = {2, 3, 4}
# update可以更新多个值
# 相当于取并集后赋值
# num1.update(num2)
# num1.update((4, 5))
num1.update([4, 5])
print(num1)
输出:
{1, 2, 3, 4, 5}
14、根据集合的特点可简单去重(无序)
Python - 集合与元素之集合定义和基本操作方法的更多相关文章
- 【python基础】之元组 集合 字典
元组 元组:元组和列表类似.但是元组中的元素是固定的(不能给一个元组添加,删除和替换元素以及重新排序) 1.创建元组 t1 = () #创建一个空元组 t2 = (1, 2, 3) t3 = tupl ...
- 六、Python集合定义和基本操作方法
一.集合的定义方法及特点 1.特点: (1)由不同元素组成 #集合由不同元素构成 s={1,2,3,3,4,3,3,} print(s)#运行结果:{1, 2, 3, 4} (2)集合无序 #集合无序 ...
- 第二百九十八节,python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表
python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表 sadd(name,values)name对应的集合中添加元素 #!/usr/bin/env python # -*- ...
- 定义一个Collection接口类型的变量,引用一个Set集合的实现类,实现添加单个元素, 添加另一个集合,删除元素,判断集合中是否包含一个元素, 判断是否为空,清除集合, 返回集合里元素的个数等常用操作。
package com.lanxi.demo2; import java.util.HashSet; import java.util.Iterator; import java.util.Set; ...
- 洗礼灵魂,修炼python(7)--元组,集合,不可变集合
前面已经把列表的基本用法讲解完 接着讲python的几大核心之--元组(tuple) 1.什么是元组? 类似列表,但为不可变对象,之前提到列表是可变对象,所谓可变对象就是支持原处修改,并且在修改前后对 ...
- Python数据结构之四——set(集合)
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 经过几天的回顾和学习,我终于把Python 3.x中的基础知识介绍好啦.下面将要继续什么呢?让我想想先~~~嗯,还是 ...
- Python基础__字典、集合、运算符
之前讨论的字符串.列表.元组都是有序对象,本节则重点讨论无序对象:字典与集合.一.字典 列表是Python中的有序集合,列表中的序指的是列表中的元素与自然数集形成了一个一一对应的关系.例如L=['I' ...
- python全栈开发-Day5 集合
python全栈开发-Day5 集合 一.首先按照以下几个点展开对集合的学习 #一:基本使用 1 .用途 2 .定义方式 3 .常用操作+内置的方法 #二:该类型总结 1. 存一个值or存多个值 只能 ...
- python之数据类型补充、集合、深浅copy
一.内容回顾 代码块: 一个函数,一个模块,一个类,一个文件,交互模式下,每一行就是一个代码块. is == id id()查询对象的内存地址 == 比较的是两边的数值. is 比较的是两边的内存地址 ...
随机推荐
- Python 迭代器与生成器及装饰器
1.迭代器(Iterator) 迭代器是访问集合元素的一种方式.有下面特点: 1)每次调用__next__()方法只访问一个元素,而且不能后退,便于循环比较大的数据集合,节省内存:(当容器中没有可访问 ...
- Berlekamp Massey算法求线性递推式
BM算法求求线性递推式 P5487 线性递推+BM算法 待AC. Poor God Water // 题目来源:ACM-ICPC 2018 焦作赛区网络预赛 题意 God Wate ...
- 【牛客Wannafly挑战赛12】小H和圣诞树
题目 可以考虑边分治,对于某一种颜色,我们处理出分治边左右两边所有以这个颜色为端点的路径长度,之后随便拼一拼就好了 但是这样对于每一组询问都需要边分一遍,这样做复杂度是\(O(nm+n\log n)\ ...
- JSONObjectSample
package com.egeniuss.platform.basic; import java.util.ArrayList; import java.util.HashMap; import ja ...
- 【学术篇】洛谷1550——打井Watering Hole
题目の传送门:https://www.luogu.org/problem/show?pid=1550 精简版题意(本来就精简了不是么):n个点,每个点可以选择打井或从别的有水的点引水,求所有点都有水用 ...
- 洛谷P2325 [SCOI2005]王室联邦
P2325 [SCOI2005]王室联邦 题目描述 "余"人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理. 他的国家有n个城市, ...
- 【转载】objective-c强引用与弱引用
形象比喻蛮好玩的^_^ __weak 和 __strong 会出现在声明中 默认情况下,一个指针都会使用 __strong 属性,表明这是一个强引用.这意味着,只要引用存在,对象就不能被销毁 ...
- DRF 序列化组件单增
目录 自定义序列化(矬) Serializer类(方式繁琐) 底层序列化类 UserSerializer 视图序列化步骤 底层反序列化类 UserCreatSerializer 视图反序列化步骤 Mo ...
- 用React实现一个自动生成文章目录的组件
原文地址:小寒的博客 功能介绍 这个组件的效果呐,就是你在浏览这个页面的时候点击右上角的叉叉看到的那个文章目录. 功能很简单,就是根据文章内容自动生成这个目录,可以快速跳转. 需要的知识点 正则 do ...
- bean的使用
前言 Spring最基础的功能就是一个bean工厂,所以本文讲解的是Spring生成bean的种种方法及细节,Spring配置文件的名字是bean.xml,定义几个类: 一个Person类: publ ...