• 引子

现在有一个linux班一个python班,我们创建两个列表,把班里的学生表示出来:

l = ['张三','李四','老男孩']

p = ['张三','李四','alex']

现在要找出既在linux班上课也在python班上课的学生,应该怎么找?

l= ['张三','李四','老男孩']
p = ['张三','李四','alex']
l_p = []
for i in l:if i in p:l_p.append(i)
print(l_p)

上面这种方法可以实现我们的需求,但是比较麻烦,而且当列表变得非常长,执行代码的效率也是问题。

  • 集合

集合是一个数学概念:由一个或多个确定的元素所构成的整体叫做集合。

集合中的元素有三个特征:

1.确定性(元素必须可hash)2.互异性(去重)3.无序性(集合中的元素没有先后之分),如集合{3,4,5}和{3,5,4}算作同一个集合。注意:集合存在的意义就在于去重和关系运算
  • 用集合解决问题

l= {'张三','李四','老男孩'}  #集合定义
p = {'张三','李四','alex'}
l_p = l&p    #集合求交集
print(l_p)

  • 集合的定义

l= {1,2,3,1}  #此处应说明集合“去重”的效果
#定义可变集合
>>> set_test=set('hello') #此处应说明集合的“无序性”
>>> set_test
{'l', 'o', 'e', 'h'}
#改为不可变集合frozenset
>>> f_set_test=frozenset(set_test)
>>> f_set_test
frozenset({'l', 'e', 'h', 'o'})
  • 集合的关系运算

1.   &.  &=:交集——既学习linux课程也学习python课程的同学

l= {'张三','李四','老男孩'}
p = {'张三','李四','alex'}
print(l.intersection(p))
print(l&p)

2. |,   |=:合集,也叫并集——linux班和python班的所有同学

求并集除了合并效果之外还有去重功能

l= {'张三','李四','老男孩'}
p = {'张三','李四','alex'}
print(l.union(p))
print(l|p)

3. -,-=:差集——只在linux而不python班的同学

l= {'张三','李四','老男孩'}
p = {'张三','李四','alex'}
print(l.difference(p))
print(l-p)

4. ^, ^=:对称差集——只在linux班或只在python班的同学

a = {1,2,3}
b = {2,3,4,5}
print(a.symmetric_difference(b))
print(a^b)

5. 包含关系

in,not in:判断某元素是否在集合内
==,!=:判断两个集合是否相等两个集合之间一般有三种关系,相交、包含、不相交。在Python中分别用下面的方法判断:set.isdisjoint(s):判断两个集合是不是不相交
set.issuperset(s):判断集合是不是包含其他集合,等同于a>=b
set.issubset(s):判断集合是不是被其他集合包含,等同于a<=b
  • 集合的常用操作

元素的增加

# 单个元素的增加 : add(),add的作用类似列表中的append# 对序列的增加 : update(),而update类似extend方法,update方法可以支持同时传入多个参数:>>> a={1,2}
>>> a.update([3,4],[1,2,7])
>>> a
{1, 2, 3, 4, 7}
>>> a.update("hello")
>>> a
{1, 2, 3, 4, 7, 'h', 'e', 'l', 'o'}
>>> a.add("hello")
>>> a
{1, 2, 3, 4, 'hello', 7, 'h', 'e', 'l', 'o'}

元素的删除

'''
集合删除单个元素有两种方法:元素不在原集合中时:set.discard(x)不会抛出异常set.remove(x)会抛出KeyError错误
'''>>> a={1,2,3,4}
>>> a.discard(1)
>>> a
{2, 3, 4}
>>> a.discard(1)
>>> a
{2, 3, 4}
>>> a.remove(1)
Traceback (most recent call last):File "<input>", line 1, in <module>
KeyError: 1

# pop():由于集合是无序的,pop返回的结果不能确定,且当集合为空时调用pop会抛出KeyError错误,# clear():清空集合>>> a={3,"a",2.1,1}
>>> a.pop()
>>> a.pop()
>>> a.clear()
>>> a
set()
>>> a.pop()
Traceback (most recent call last):File "<input>", line 1, in <module>
KeyError: 'pop from an empty set'

转载于:https://my.oschina.net/devopsxin/blog/1922334

1.10 python 基本数据类型-集合相关推荐

  1. Python基础——数据类型—集合

    Python基础--数据类型-集合 Python基础--数据类型-集合 创建集合 快速查看元素是否在集合内 两个集合间的运算 集合a中包含,而集合b中不包含的元素 集合a或集合b中包含的所有元素 集合 ...

  2. python集合类型应用场景_python学习笔记(10)--组合数据类型(集合类型)

    集合类型 集合是多个元素的无序组合,每个元素唯一,不存在相同类型,每个元素是不可变类型.用{}表示,元素间用逗号分隔.建立结合类型用{},或set函数,如果是空集合必须用set. >>&g ...

  3. python的核心数据类型_Python核心数据类型-集合

    Python核心数据类型-集合 特点 确定性 互异性 无序性 len() ##返回集合的长度 #判断元素是否在集合中 In [80]: x = set([1,2,3,4]) In [81]: 1 in ...

  4. Python入门篇-高级数据类型集合(set)和字典(dict)

    Python入门篇-高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.集合(set) 1>.集合的特点 约定set 翻译为集合c ...

  5. Python序列 数据类型 创建方式 Tuple元组 Str字符串 List列表 dict字典 Set集合 range,zip,map,enumerate

    Python 序列分类 数据类型 详细介绍 Python 主要数据类型: 元组Tuple, 字符串Str,列表List,字典Dict,集合Set 对比 元组Tuple 字符串Str 列表List 字典 ...

  6. 07 Python 组合数据类型(集合、序列、元组、列表)

    集合类型及操作 集合类型定义 集合是多个元素的 集合类型与数学中的集合概念一致 集合元素之间无序,每个元素唯一,不存在相同元素 集合元素不可更改,不能是可变数据类型 集合是多个元素的无序组合 集合用大 ...

  7. Python组合数据类型之集合类型

    单元概述 主要解决问题:让程序更好地处理一组数据 三类重要组合数据类型:集合类型.序列类型和字典类型 学完本章,我们能够在头脑中建立集合.序列和字典的模式来表达对一组数据的表达和处理 1. 定义 集合 ...

  8. Python基础数据类型之set集合

    Python基础数据类型之set集合 一.set数据类型介绍 二.set集合演示 三.set集合中hash介绍 1.哈希定义 2.数据类型的hash和不可hash 3.set中hash示例 四.set ...

  9. Python的零基础超详细讲解(第四天)-Python的数据类型

    Python 基本数据类型 Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型&q ...

最新文章

  1. DeepLab v2
  2. struts2教程(5)--请求参数校验
  3. Response_案例2_输出字符数据
  4. List的扩容机制,你真的明白吗?
  5. http拨测是什么意思_HTTP 501 是什么意思?
  6. LeetCode 64 最小路径和
  7. oracle plsql 无法连接 报 ORA-12560: TNS:protocol adapter error
  8. 如何成为一名优秀的web前端工程师
  9. docker使用_Docker的基本使用
  10. 最全Redis49个面试题目及答案:线程设计+哨兵+复制+事务+集群+持久化等
  11. 通过配置ant提高EJB开发效率
  12. JS常见的兼容性问题汇总
  13. 嵌入式系统开发-麦子学院(5)——linux高级编程之文件IO管理
  14. ERP与条码系统集成实现精益化可追溯
  15. 粗糙集(Rough Sets)
  16. java 父委托机制优点_Java虚拟机父类委托机制设计的优点
  17. 海尔电视 android,海尔电视怎么投屏
  18. html asterisk 电话,WebGuide: Aplicació Web (HTML5) i Asterisk utilitzant VoIP
  19. 只用3行代码,让Python提速4倍!最强辅助
  20. 电力电子技术(第二章)

热门文章

  1. 对3D体感试衣镜的看法
  2. JAVA多线程读写文件如何做到线程安全?(文件锁,FileChannel)
  3. 虚拟化与元宇宙:人类文明演化的奇点与治理
  4. vue如何设置 网页标题 关键字 描述
  5. Linux驱动之platform设备驱动
  6. 使用公众号快速申请小程序的流程
  7. QtEmbedded-4.8.6-arm 字体模糊 图片锐化不清晰
  8. 最新全国手机号码归属地信息SQLite数据库2019年2月更新
  9. 使用FFmpeg设置视频文件的详细信息
  10. SpringBoot 自动配置初探