一.作用:集合、list、tuple、dict一样都可以存放多个值,但是集合主要用于:关系运算、去重

# 1.1 关系运算
friends1 = ["zero","kevin","jason","egon"]
friends2 = ["Jy","ricky","jason","egon"] l=[]
for x in friends1:
if x in friends2:
l.append(x)
print(l)

二.定义:在{}内用逗号分隔开多个元素,集合具备以下三个特点:

1:每个元素必须是不可变类型
set1={1,5,{'name':'lxx','age':18}}#报错,包含字典是可变类型
2:集合内没有重复的元素
set1={1,5,6,8,'hehe'}
3:集合内元素无序
>>> set1={15,9,6,8,'hehe'}
>>> set1
{6, 8, 9, 15, 'hehe'}

集合类型既没有索引也没有key与值对应,所以无法取得单个的值,而且对于集合来说,主要用于去重与关系元素,根本没有取出单个指定值这种需求。

三.类型转换:凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型

>>> s1=set('aaa')#字符串
>>> s2=set([1,5,6])#列表
>>> s3=set({'name':'dsz'})#字典
>>> s4=set((1,5,6,8))#元祖
>>> s1,s2,s3,s4
({'a'}, {1, 5, 6}, {'name'}, {8, 1, 5, 6})

四.使用:

friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
1.取交集,两者共同的好友
>>> friends1 & friends2
{'egon', 'jason'}
2.2 取并集/合集:两者所有的好友
>>> friends1 | friends2
{'zero', 'kevin', 'egon', 'ricky', 'Jy', 'jason'}
3.取差集:取各自独有的好友
>>> friends1 - friends2#friends1独有的好友
{'kevin', 'zero'}
>>> friends2 - friends1#friends2独有的好友
{'ricky', 'Jy'}
4.对称差集: 求两个用户独有的好友们(即去掉共有的好友)
>>> friends1 ^ friends2
{'zero', 'kevin', 'ricky', 'Jy'}
5.父子集:包含的关系
>>> s1={1,5,6,8,9}
>>> s2={1,5,6}
>>> s1 > s2 #当s1大于s2时,才能说s1是s2父集,s2为子集,如果相等时互为父子
True

去重:

1. 只能针对不可变类型
>>> set([1,1,1,1,2])
{1, 2}
2. 集合本身是无序的,去重之后无法保留原来的顺序
>>> l=[1,'a','b','z',1,1,1,2]
>>> l=list(set(l))
>>> l
[1, 2, 'b', 'a', 'z']

其他操作:

1.长度

2.成员运算

3.循环

其他内置方法:
s={1,2,3}
需要掌握的内置方法1:discard
s.discard(4) # 删除元素不存在do nothing
print(s)
s.remove(4) # 删除元素不存在则报错 需要掌握的内置方法2:update
s.update({1,3,5})
print(s) 需要掌握的内置方法3:pop
res=s.pop()
print(res) 需要掌握的内置方法4:add
s.add(4)
print(s)
其余方法全为了解
res=s.isdisjoint({3,4,5,6}) # 两个集合完全独立、没有共同部分,返回True
print(res) 了解
s.difference_update({3,4,5}) # s=s.difference({3,4,5})
print(s)

最新文章

  1. JavaScript刷新页面n种方法
  2. 一个的unity学习系列的博客
  3. 使用selenium+phantomJS实现网页爬取
  4. RabbitMQ常用命令
  5. 读<jQuery 权威指南>[5]-插件
  6. Unity开发之NGUI系列
  7. 算法系列3《SHA》
  8. EF异常:WebForm、Console、Winform层不引入EF报错
  9. 公交wifi运营平台分析
  10. 关于css样式的看法
  11. apache 服务器端口被IIS服务器占用
  12. Creating a Navigation Drawer 创建一个导航侧边栏
  13. UVa455 Periodic String 的wronganswer问题探讨,以及AC的新思路
  14. SaltStack 部署案例 02
  15. 聊聊大学期间的我是怎样学习Linux系统的
  16. Teaching yourself programming -一个编程爱好者的碎碎念
  17. noip2016 天天爱跑步
  18. NYOJ 一笔画
  19. JavaScript总结(二)
  20. 06-matplotlib-饼状图

热门文章

  1. 09.Django-数据库优化
  2. 轻量级进度条 – Nprogress.js
  3. Linux系统管理——Linux简介
  4. Flask 蓝图(Blueprint)使用方式解析
  5. 驱动开发 —— 从零开始(1) 配置vs20xx+wdkxx环境
  6. 网页中为什么常用AT替换@(repost from https://zhidao.baidu.com/question/122291.html)
  7. 5.kubernetes的服务暴露插件-Traefik
  8. WeChair项目Beta冲刺(1/10)
  9. 2.WebPack初始化
  10. Web前端兼容性指南