set集合的特点是无序、不重复序列

创建集合:

1
2
3
4
5
6
7
8
9
10
11
12
13
a.s1 = {11,22}
b.s2 = set()
c.s3 = set([11,22,33,44])
s = set()   #创建空集合
li = [11,22,11,22]
s2 = set(li)
print(s2)
{11, 22}
se = {"123","456"}
li = [ ]
list((11,22,33,44))
原理:当执行list()时,内部会调用list __init__,内部执行for循环(11,22,33,44) [11,22,33,44]
#只要类()这样的形式,就会去调用__init__的方法。

操作集合:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
s = set()
s.add(123)   #添加元素
s.add(123)
s.add(123)
print(s)
s.clear()    #清空内容
s.copy()     #浅拷贝
s1 = {11,22,33}
s2 = {22,33,44}
s3 = s1.difference(s2)   #a中存在,b中不存在的 s1中存在,s2中不存在
s4 = s2.difference(s1)   #s2中存在,s1中不存在
# s3 = s1.symmetric_difference(s2)   #a中存在b中不存在,b中存在a中不存在的拿出来。
# print(s3)
# s1.difference_update(s2)            #把a(s1)中存在,b(s2)中不存在的值更新到a中。如果以后还会用到s1,就不要用此方法,如果确定以后不会再用
# s1了就可以直接用这个方法。这样的好处是减少变量的声明。
# print(s1)
# s1.discard(11)       #移除指定元素,如果元素不存在则不报错
# s1.remove(1111)      #移除指定元素,如果元素不存在则报错
# s1.pop()             #随机移除一个s1中的元素,因为集合是无序的,所以移除元素是不确定的。移除的
# 时候会返回移除的元素的值。
# pop方法演示:
s1 = {11,22,33}
ret = s1.pop()
print(ret)
33
 
# s1 = {11,22,33}
# s2 = {22,33,44}
# s3 = s1.intersection(s2)   #取s1和s2的交集,就是两个集合都有的元素
# print(s3)
# {33, 22}
# s1.intersection_update(s2)  #同样与difference_update类似,把两个集合的交集元素更新到s1中
# print(s1)
# s3 = s1.union(s2)     #把两个集合合起来,去并集。如s1和s2,结果就是11,22,33,44
# print(s3)
# {33, 22, 11, 44}
s1 = {11,22,33}
s1.update([55,66,777])            #接收一个可迭代的对象,内部会自己去循环这个对象,然后把元素
# 更新到集合中。相当于批量添加
print(s1)
{33, 66, 777, 11, 22, 55}
s1.update("abcdefg")              #字符串也是可迭代的,会把每个字符分开,更新到集合中
print(s1)
set练习题:
假设脚本自动采集资产。当前情况是:1槽:8G 2槽:4G 4槽2G,如果你做了一个操作,将4槽的内存放到了3槽,1槽的内存换成了4G。资产更新了,应该把最新的数据更新到字典中。
1
2
3
4
5
6
7
8
9
10
11
old_dict = {
    "#1": 8,
    "#2": 4,
    "#4": 2,
}
 
new_dict = {
    "#1": 4,
    "#2": 4,
    "#3": 2,
}
现在应该把#3的数据更新到old_dic字典中,把#4的数据删除,然后更新#1的值。
首先要找出:
应该删除哪几个槽位
应该更新哪几个槽位
应该增加那几个槽位
1
2
3
del_set = set(old_dict).difference(set(new_dict))      #取出需要删除的槽位{'#4'}
add_set = set(new_dict).difference(set(old_dict))      #取出需要添加的槽位{'#3'}
update_set = set(new_dict).intersection(set(old_dict)) #取出需要更新的槽位{'#2', '#1'}

python(三)set集合的更多相关文章

  1. Python之路(第五篇) Python基本数据类型集合、格式化、函数

    一.变量总结 1.1 变量定义 记录某种状态或者数值,并用某个名称代表这个数值或状态. 1.2 变量在内存中的表现形式 Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是 ...

  2. Python的set集合详解

    Python 还包含了一个数据类型 -- set (集合).集合是一个无序不重复元素的集.基本功能包括关系测试和消除重复元素.集合对象还支持 union(联合),intersection(交),dif ...

  3. Python基本数据类型集合、格式化、函数

    一.变量总结 1.1 变量定义 记录某种状态或者数值,并用某个名称代表这个数值或状态. 1.2 变量在内存中的表现形式 Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是 ...

  4. Python - 三大器 迭代器,生层器,装饰器

    目录 Python - 三大器 迭代器,生层器,装饰器 一. 容器 二. 可迭代对象(iterable) 三. 迭代器 四. 生成器 五. 装饰器 1. 定义 六. 闭包 Python - 三大器 迭 ...

  5. Python列表、集合与字典(3)

    目录 一.列表 二.集合 三.字典 一.列表 1. 列表初识   列表的使用为处理特定顺序排列的数据提供了便利,列表元素可以是字母.数字或者其他信息,同时所加元素之间不存在任何关系.   在Pytho ...

  6. python基本数据类型集合set操作

    转:https://www.cnblogs.com/tina-python/p/5468495.html 一.集合的定义 set集合,是一个无序且不重复的元素集合. 集合对象是一组无序排列的可哈希的值 ...

  7. python基础数据类型--集合(set)

    python基础数据类型--集合(set) 集合是一个数学概念由一个或多个确定的元素所构成的整体叫做集合 集合中的三个特征 1.确定性(元素必须死可hash) 2.互异性(去重) 3.无序性(集合中的 ...

  8. JAVA:三种集合LIST、SET、MAP

    1. 集合框架介绍 我 们知道,计算机的优势在于处理大量的数据,在编程开发中,为处理大量的数据,必须具备相应的存储结构,数组可以用来存储并处理大量类型相同的数 据,但是会发现数组在应用中的限制:数组长 ...

  9. python爬虫工具集合

    python爬虫工具集合 大家一起来整理吧!强烈建议PR.这是初稿,总是有很多问题,而且考虑不全面,希望大家支持! 源文件 主要针对python3 常用库 urllib Urllib是python提供 ...

随机推荐

  1. ASM文件系统

    1.确认数据库版本 2.个人理解的存储解决方案的发展趋势 2.1图示说明 2.2图示描述 如上图我们描述了在不同时期的IT行业(数据库)出现的存储文件系统,下面我们将分别说明: ü  裸设备:所谓裸设 ...

  2. unicode可以通过编码(encode)成为特定编码的str

    1.原始字符串python中的原始字符串以r开头,使用原始字符串可以避免字符串中转义字符带来的问题,例如写路径时 path = 'c:\noway',此时用 print path,其结果为:c:owa ...

  3. DS实验题 Order 已知父节点和中序遍历求前、后序

    题目: 思路: 这题是比较典型的树的遍历问题,思路就是将中序遍历作为位置的判断依据,假设有个节点A和它的父亲Afa,那么如果A和Afa的顺序在中序遍历中是先A后Afa,则A是Afa的左儿子,否则是右儿 ...

  4. Yii源码阅读笔记(二十八)

    Yii/web中的Controller类,实现参数绑定,启动csrf验证功能,重定向页面功能: namespace yii\web; use Yii; use yii\base\InlineActio ...

  5. 周记:Linux下C编程

    也啥都没干,计划一个都没干.吼吼-- 周六去看[21天学通Linux_C编程]笔记: 突然都对这本书没信心了.刚开始,就出现的不满如下:1.创建vim启动器时候,类型要选择[终端下的应用程序]没说,虽 ...

  6. 《Linux内核分析》第七周 可执行程序的装载

    [刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK SEVEN ...

  7. 检测中文长度gbk下2个字节

    //$str = 'fff&sdf你是sdf好fdf啊b歌hello中world';$str = 'd你b_fff是好啊歌中潺潺 ';echo chineselength($str).&quo ...

  8. php判断闰年

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. css样式管理

    css命名 传统网站页面(企业级),大概就是about,product,register等,他们的名字较好区分,他们的样式整体也不会很大,用简单的驼峰法就够了,或者简单的模块. 非传统企业页面,命名驼 ...

  10. 简单5步说清App软件在线开发、App制作多少钱?

    开发制作一款App,所有人都会首先关心开发一款App多少钱这个问题.从网上的信息来看,花费个几十万是很正常的事情,甚至有人说要花上百万才能制作出一款App.那么App软件的开发制作到底和什么有关?怎么 ...