1、集合的创建
s = set('fansik and fanjinbao')
print(s)
打印结果(去掉了重复的字符):
{'k', 'd', 'f', 'n', ' ', 'j', 'i', 'b', 's', 'o', 'a'} 或者:
s1 = ['fansik', 'fanjinbao', 'zhansan', 'fansik']
print(set(s1))
打印结果(去掉了重复的名字):
{'fanjinbao', 'zhansan', 'fansik'} 集合对象是一组无序排列的可哈希的值(相当于字典的key):
li = [['li', 'l1'], 'fansik', 'fanjinbao']
s = set(li) #TypeError: unhashable type: 'list'
print(s)
2、集合的分类
可变集合(set):可添加和删除元素,可变集合本身非可哈希的,不能用作字典的键,也不能做其他集合的元素
li = ['fansik', 'fanjinbao']
s = set(li)
print(s)
d = {s: 'value'} # TypeError: unhashable type: 'set'

不可变集合(frozenset):与可变集合相反

3、集合的基本操作
创建集合:集合没有自己的语法格式,只能通过集合的工厂方法set()和frozenset()创建
s1 = set("fansik")
s2 = frozenset("fanjinbao")
print(s1, type(s1)) # {'i', 'n', 's', 'a', 'f', 'k'} <class 'set'>
print(s2, type(s2)) # frozenset({'j', 'i', 'n', 'o', 'b', 'a', 'f'}) <class 'frozenset'>

访问集合:由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或是用in、not in来访问或判断集合元素

s1 = set("fansik")
print('s' in s1) # True
print('fanjinbao' not in s1) # True
for i in s1:
print(i)

执行结果:

n
k
f
i
a
s 更新集合:
s1 = set("fansik")
s1.add('fanjinbao') # 添加了一个'fanjinbao'的元素到集合中
print(s1)

执行结果:

{'a', 'f', 'n', 'fanjinbao', 'i', 's', 'k'}
s1 = set("fansik")
s1.update('fanjinbao') # 将'fanjinbao'的每个字符作为一个元素添加到集合中
print(s1)

执行结果:

{'b', 'o', 'i', 'k', 'j', 'f', 'a', 's', 'n'}
s1 = set("fansik")
s1.update(['fanjinbao', 'zhangsan']) # 将'fanjinbao'和'zhangsan'两个元素添加到集合中
print(s1)

执行结果:

{'fanjinbao', 's', 'i', 'zhangsan', 'k', 'n', 'a', 'f'}
s1 = set(['fansik', 'fanjinbao', 'zhangsan'])
s1.remove('fansik') # 将'fansik'元素从集合中删除
print(s1)

执行结果:

{'zhangsan', 'fanjinbao'}
s1 = set(['fansik', 'fanjinbao', 'zhangsan'])
s1.pop() # 随机删除集合中的元素
print(s1)

执行结果:

{'zhangsan', 'fanjinbao'}
s1 = set(['fansik', 'fanjinbao', 'zhangsan'])
s1.clear() # 清空集合
print(s1)

执行结果:

set()
s1 = set(['fansik', 'fanjinbao', 'zhangsan'])
del s1 # 删除集合
print(s1)

执行结果:

NameError: name 's1' is not defined

4、集合的交集
s1 = set('abcde')
s2 = set('defgh')
print(s1.intersection(s2))
或者:
print(s1 & s2)

执行结果:

{'e', 'd'}

5、集合的并集
s1 = set('abcde')
s2 = set('defgh')
print(s1.union(s2))
或者:
print(s1 | s2)

执行结果:

{'c', 'g', 'e', 'b', 'f', 'd', 'h', 'a'}

6、集合的差集
s1 = set('abcde')
s2 = set('defgh')
print(s1.difference(s2))
或者:
print(s1 - s2)

执行结果:

{'a', 'b', 'c'}

7、对称差集
s1 = set('abcde')
s2 = set('defgh')
print(s1.symmetric_difference(s2))
或者:
print(s1 ^ s2)

执行结果:

{'a', 'g', 'b', 'f', 'c', 'h'}

8、(超集 )父集
s1 = set('abcde')
s2 = set('defgh')
s3 = set('abcdefg')
print(s1.issuperset(s2)) # False
print(s3.issuperset(s1)) # True
9、子集
s1 = set('abcde')
s2 = set('defgh')
s3 = set('abcdefg')
print(s1.issubset(s2)) # False
print(s1.issubset(s3)) # True

Python基础-set集合的更多相关文章

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

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

  2. Python基础(三)——集合、有序 无序列表、函数、文件操作

    1.Set集合 class set(object): """ set() -> new empty set object set(iterable) -> n ...

  3. python 基础 set 集合类型补充

    为啥今天又重提这个数据类型呢?平时用的少,等要用起来的时候才发现,自己对这块啥都不知道了,so,今天就把这块再梳理一下咯. 一.set集合,是一个无序且不重复的元素集合.这一点是非常重要的. 二.集合 ...

  4. python基础08_set集合

    关于前几次课的回顾: #!/usr/bin/env python # coding:utf-8 ## 字符串 数字 列表 元组 字典 ## 可变:列表 字典 ## 不可变:字符串, 数字, 元组 na ...

  5. python基础七--集合

    12.221.昨日内容回顾 小数据池: int:-5--256 str:1.不能有特殊字符 2.*int不能超过20 编码:所能看到的最小构成单位叫字符 ascii : 8位 1字节 表示1个字符 u ...

  6. Python基础入门-集合

    今天给大家分享的是python中集合(set)的概念,集合这个词其实和高中学的数学集合的概念很相近,或者作为初学者你就可以把它理解为数学当中的集合.在python中集合(set)是由一个个键组成的,但 ...

  7. python基础——数字&集合&布尔类型

    Python的核心数据类型 内置对象 对象类型 例子 数字 123,3.1415,3+4j,Decimal(小数),Fraction(分数) 字符串 'dodo',"guido's" ...

  8. Python基础-set集合操作

    set集合,是一个无序且不重复的元素集合.定义方式类似字典使用{}创建 目前我们学过的数据类型: 1.字符串(str),2.整型(int),3.浮点型(float),4,列表(list) 5.元组(t ...

  9. Python基础-week03 集合 , 文件操作 和 函数详解

    一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...

  10. Python基础操作-集合

    在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法 ...

随机推荐

  1. Atitit .jvm 虚拟机指令详细解释

    Atitit .jvm 虚拟机指令详细解释 1. 一.未归类系列A1 2. 数据mov系列2 2.1. 二.const系列2 2.2. 三.push系列2 2.3. ldc系列 该系列命令负责把数值常 ...

  2. TFS中如何排除Nuget的Packages文件夹

    在项目的解决方案下新增.tfignore文件.文件内容如下: \packages 在项目的解决方案下新增.nuget文件夹,并新增Nuget.config文件,文件内容如下: <?xml ver ...

  3. OC 内存管理-01

    创建对象 .分配内存空间,存储对象 .初始化成员变量 .反回对象的指针地址 //过程 ()对象在完成创建的同时,内部会自动创建一个引用计数器,这个计数器,是系统用来判断是否回收对象的唯一依据, 当我们 ...

  4. PHP中插件机制的一种实现方案

    这篇文章的出发点是我对插件机制的理解,及其在PHP中的实现.此方案仅是插件机制在PHP中的实现方案之一,写下来和大家分享,欢迎大家一起讨论. 插件,亦即Plug-in,是指一类特定的功能模块(通常由第 ...

  5. 第4步:创建RAC共享磁盘组

    方法一:使用asmdevices(推荐使用,但不适用EMC Powerpath) )查看硬盘的SCSI号,两个机器认到的/dev/sda对应在实际的物理盘可能不是一块,但scsi号肯定是完全一致的. ...

  6. 数值孔径NA、分辨率极限与衍射极限

    一.数值孔径  数值孔径(NA):是一个无量纲的数,用以衡量该系统能够收集的光的角度范围.越大,收集到的光越多,分辨率越高. 描述了透镜收光锥角的大小,决定着透镜收光能力和空间分辨率. 数值孔径(NA ...

  7. PDO drivers no value in Windows

    学习php编程遇到 Uncaught exception 'PDOException' with message 'could not find driver' 或者 Undefined class ...

  8. Unity3d Resources TextAsset 文本

    一些小型数据,可以用txt文本作为媒介,进行获取.传输.修改.存储: 比如:User1.2.3.txt,放入 Resources/Data 文件下: 一,Unity3d Resources.Load ...

  9. Android无线测试之—UiAutomator UiSelector API介绍之七

    对象搜索—索引与实例 一.索引与实例说明: 1)index:在同一级中的编号,在兄弟类中组件的编号,index从0开始 2)instance:同一个布局中同一类组件的编号,instance从0开始 二 ...

  10. Android开发:《Gradle Recipes for Android》阅读笔记1.5

    这节讲的是如何如何添加JAVA依赖库. 默认的android项目有两个build.gradle文件,分别位于顶级目录,和应用自己的目录下(通常放在一个叫app的目录下面). gradle支持多种方式列 ...