七章、集合


Although practicality beats purity.——The Zen of Python


  Python中的集合同数学中的集合概念类似,也是用于保存不重复元素的。它分为可变集合(set)不可变集合(frozenset)两种。在形式上,集合的所有元素都要放在一对大括号“{}”,两个相邻的元素使用逗号分隔。集合的最好应用就是去重,因为集合中的每个元素都是唯一的。

  一、集合的创建

  在Python中提供了两种方法创建集合:一种是使用“{ }”创建;另一种是通过set()函数将列表元组等可迭代对象转换为集合。

  1.使用“{ }”创建集合

  在Python中,创建set集合也可以像列表、元组和字典一样,直接将集合赋值给变量从而实现创建集合,即直接使用大括号创建,其语法格式如下:

  setname={elsment1,element2,......,element n}

  setname:集合的名称,可以是任何符合Python命名规则的标识符;

  element:表示集合中的元素,个数没有限制,并且只要是Python支持的数据类型就可以。

  在创建集合是,如果输入重复的元素,Python会自动保留一个。

1 set1={"名刀观世正宗",'月之光芒','流光星陨刀','黑刀暗月'}
2 set2={1,2,15,8,4,6,2}
3 set3={'Python',("人生苦短,我用Python")}
4 print(type(set1),set1,set2,set3)
5 输出:
6 <class 'set'> {'流光星陨刀', '月之光芒', '名刀观世正宗', '黑刀暗月'} {1, 2, 4, 6, 8, 15} {'人生苦短,我用Python', 'Python'}

  由于Python中集合是无序的,所以每次输出元素时的排列顺序都可能与上面不同.

  2.使用set()函数创建

  在Python中,可以使用Set()函数将列表、元组等其他可迭代对象转换为集合。set()函数语法格式如下:

  setname=set(iteration)

  setname:集合的名称

  iteration:表示要转换为集合的可迭代对象,可以是列表、元组、range对象,此外也可以说是字符串,如果是字符串,返回的集合将是包含全部不重复字符的集合。

1 set1=set("名刀观世正宗、月之光芒、流光星陨刀、黑刀暗月")
2 set2=set([3.1415,2356,220,284])
3 set3=set(("人生苦短","我用Python"))
4 print(set1,set2,set3)
5 输出:
6 {'世', '星', '名', '之', '、', '刀', '流', '暗', '芒', '光', '月', '黑', '陨', '正', '观', '宗'} {220, 3.1415, 2356, 284} {'人生苦短', '我用Python'}

  在创建空集合时,只能使用set()函数实现,而不能使用一对大括号实现,这是因为在Python中,直接使用一对大括号,表示创建一个空字典。

二、集合的添加和删除

  集合是可变序列,所以在创建集合后,还可以对其添加或者删除元素。

  1.向集合中添加元素

  向集合中添加元素可以使用add()方法实现,语法格式如下:

  setname.add(element)

  setname:表示要添加元素的集合;

  element:表示要添加元素的内容。这里只能使用字符串、数字及布尔类型的True或者False,不能使用列表、元组等可迭代对象。

1 set1=set("名刀观世正宗、月之光芒、流光星陨刀、黑刀暗月")
2 set1.add("月光色,女子香")
3 print(set1)
4 输出:
5 {'正', '世', '宗', '暗', '、', '光', '名', '芒', '月', '观', '星', '之', '陨', '月光色,女子香', '黑', '流', '刀'}

  2.从集合中删除元素

  在Python中,可以使用del命令删除整个集合,也可以使用集合的pop()或者remove()方法删除一个元素,或者使用集合对象的clear()方法清空集合,即删除集合中的所有元素,使其变为空集合。

 1 set1=set("名刀观世正宗、月之光芒、流光星陨刀、黑刀暗月")
 2 set1.add("月光色,女子香")
 3 set1.remove("月光色,女子香")
 4 print("使用remove()方法移除一个指定元素后:",set1)
 5 set1.pop()
 6 print("使用pop()方法移除最后一个元素:",set1)
 7 set1.clear()
 8 print("使用clear()方法清空指定集合后:",set1)
 9 输出:
10 使用remove()方法移除一个指定元素后: {'世', '星', '陨', '流', '光', '暗', '宗', '观', '刀', '正', '之', '、', '黑', '名', '芒', '月'}
11 使用pop()方法移除最后一个元素: {'星', '陨', '流', '光', '暗', '宗', '观', '刀', '正', '之', '、', '黑', '名', '芒', '月'}
12 使用clear()方法清空指定集合后: set()

  使用集合的remove()方法时,如果指定的内容不存在,则会抛出异常,所以在移除指定元素之前,最好先判断其是否存在。

三、集合的交集、并集和差集运算

  集合最常用的操作就是进行交集、并集和差集运算。交集运算使用“&”符号,并集运算使用“|”符号,差集运算使用“-”符号,具体示例如下:

 1 set1=set(['名刀观世正宗','月之光芒','流光星陨刀','黑刀暗月'])
 2 print('DNF中的太刀武器:',set1,'\n')
 3 set2=set(['月之光芒','妖刀村正'])
 4 print('我喜欢的武器:',set2)
 5 print('交集运算:',set1 & set2)
 6 print('并集运算:',set1 | set2)
 7 print('差集运算:',set1 - set2)
 8 输出:
 9 DNF中的太刀武器: {'名刀观世正宗', '月之光芒', '黑刀暗月', '流光星陨刀'}
10
11 我喜欢的武器: {'月之光芒', '妖刀村正'}
12 交集运算: {'月之光芒'}
13 并集运算: {'月之光芒', '妖刀村正', '流光星陨刀', '名刀观世正宗', '黑刀暗月'}
14 差集运算: {'名刀观世正宗', '黑刀暗月', '流光星陨刀'}

四、列表、元组、字典和集合的区别

列表、元组、字典和集合的区别

数据结构 是否可变 是否重复 是否有序 定义符号
列表 可变 可重复 无序 []
元组 不可变 可重复 有序 ()
字典 可变 可重复 无序 {key:value}
集合 可变 不可重复 无序 {}

转载于:https://www.cnblogs.com/1210x1184/p/11107943.html

我的Python入门笔记(10)相关推荐

  1. Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)

    Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...

  2. python入门笔记——内置函数作业

    python入门笔记--内置函数作业 # 求三组连续自然数的和:求出1到10,20到30,35到45的三个和 sum1 = sum(range(1,11)) sum2 = sum(range(20,3 ...

  3. python入门笔记之初步了解代码

    # # python入门笔记之初步了解代码 #### 昨日回顾 ##### 操作系统 对计算机:秘书,管家 对人类:提供一个人性化操作台 ##### 三层架构 ```mermaid graph TD ...

  4. python入门笔记——飞机大战(极简版、未进行继承优化)

    python入门笔记--飞机大战(极简版.未进行继承优化) import random import pygame# 引用pygame里的模块 from pygame.locals import *# ...

  5. Python 入门笔记6——列表

    Python 入门笔记6--列表 序列 列表 列表的创建 list()创建 range()创建整数列表 推导式生成列表 列表元素的增加 append()方法 +运算符操作 +=运算符操作 extend ...

  6. Python自学笔记10:实操案例七(根据星座测试性格特点、模拟12306火车订票下单)

    Python自学笔记10:实操案例七(根据星座测试性格特点.模拟12306火车订票下单) 网课传送门:https://www.bilibili.com/video/BV1Sw411Z779?p=157 ...

  7. python入门笔记——类和对象⑤(继承)

    python入门笔记--类和对象⑤(继承) # python中展现面向对象的三大特征:封装.继承.多态 # 封装:把内容封装到某个地方以便后续的使用 # 对封装来说,其实就是使用初始化构造方法将内容封 ...

  8. Python数据分析入门笔记10——简单案例练习(学生信息分析)

    系列文章目录 Python数据分析入门笔记1--学习前的准备 Python数据分析入门笔记2--pandas数据读取 Python数据分析入门笔记3--数据预处理之缺失值 Python数据分析入门笔记 ...

  9. python新手入门笔记_2020最新Python入门笔记

    Python变量和数据类型 数据类型 print语句 注释 Python的注释以 # 开头,后面的文字直到行尾都算注释 这里要注意注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远 ...

  10. 2020最新Python入门笔记,建议收藏

    Python变量和数据类型 数据类型 print语句 注释 Python的注释以 # 开头,后面的文字直到行尾都算注释 # 这一行全部都是注释... print 'hello' # 这也是注释 这里要 ...

最新文章

  1. table相关的API
  2. 使用elasticsearch-php需要注意的问题
  3. Linux中命令链接操作符的十个最佳实例
  4. 2020-12-09 深度学习 卷积神经网络结构分析
  5. 【视频课】言有三每天答疑,38课深度学习+超60小时分类检测分割数据算法+超15个Pytorch框架使用与实践案例助你攻略CV...
  6. 使用COE脚本绑定SQL Profile
  7. 有机化学芳烃 芳香性
  8. 从未如此简单:10分钟带你逆袭Kafka!
  9. SpringBoot自动配置原理流程
  10. 大屏实时监控-2019年CSDN博客之星年度总评选(2019-01-20 23:30)
  11. datetimepicker中文不生效_搜索引擎技术(二十)- elasticsearch - 中文分词器
  12. npm ERR! code ERR_STREAM_WRITE_AFTER_END npm install 报错实力踩坑npm,自从用了npm之后项目构建和插件管理确实方便了很多,但也是被坑的不要不要的
  13. 软件测评师--第九小时 web应用测试
  14. 全球与中国人工智能翻译服务市场现状及未来发展趋势
  15. VMware 安装安卓虚拟机 一步一步的手把手教学
  16. TaobaoSchedule调度管理控制台
  17. 基于Linux的WebSphere性能调优与故障诊断
  18. 阿里云服务器CentOS部署Minio服务实现远程访问
  19. 团队任务5:项目总结
  20. 2014智联卓聘积分获取新攻略

热门文章

  1. thymeleaf案列
  2. JavaWeb前后端分离架构
  3. DS-最大堆和优先队列
  4. 韩国EN电源维修EnerStream20直流电源维修详解
  5. SoapUi 传入http链接 不能用
  6. pip下载速度过慢解决办法
  7. Ubuntu16 xfce 安装中文输入法
  8. Unity杂谈(二)字体缺字?加一个!
  9. Dropbox同步机制
  10. GT1030 GTX1050 Pascal Maxwell系列N卡上Big Sur (Monterey)开启QE/CI驱动教程