Python基础-set集合
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集合的更多相关文章
- python基础数据类型--集合(set)
python基础数据类型--集合(set) 集合是一个数学概念由一个或多个确定的元素所构成的整体叫做集合 集合中的三个特征 1.确定性(元素必须死可hash) 2.互异性(去重) 3.无序性(集合中的 ...
- Python基础(三)——集合、有序 无序列表、函数、文件操作
1.Set集合 class set(object): """ set() -> new empty set object set(iterable) -> n ...
- python 基础 set 集合类型补充
为啥今天又重提这个数据类型呢?平时用的少,等要用起来的时候才发现,自己对这块啥都不知道了,so,今天就把这块再梳理一下咯. 一.set集合,是一个无序且不重复的元素集合.这一点是非常重要的. 二.集合 ...
- python基础08_set集合
关于前几次课的回顾: #!/usr/bin/env python # coding:utf-8 ## 字符串 数字 列表 元组 字典 ## 可变:列表 字典 ## 不可变:字符串, 数字, 元组 na ...
- python基础七--集合
12.221.昨日内容回顾 小数据池: int:-5--256 str:1.不能有特殊字符 2.*int不能超过20 编码:所能看到的最小构成单位叫字符 ascii : 8位 1字节 表示1个字符 u ...
- Python基础入门-集合
今天给大家分享的是python中集合(set)的概念,集合这个词其实和高中学的数学集合的概念很相近,或者作为初学者你就可以把它理解为数学当中的集合.在python中集合(set)是由一个个键组成的,但 ...
- python基础——数字&集合&布尔类型
Python的核心数据类型 内置对象 对象类型 例子 数字 123,3.1415,3+4j,Decimal(小数),Fraction(分数) 字符串 'dodo',"guido's" ...
- Python基础-set集合操作
set集合,是一个无序且不重复的元素集合.定义方式类似字典使用{}创建 目前我们学过的数据类型: 1.字符串(str),2.整型(int),3.浮点型(float),4,列表(list) 5.元组(t ...
- Python基础-week03 集合 , 文件操作 和 函数详解
一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...
- Python基础操作-集合
在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法 ...
随机推荐
- SDRAM驱动篇之简易SDRAM控制器的verilog代码实现
在Kevin写的上一篇博文<SDRAM理论篇之基础知识及操作时序>中,已经把SDRAM工作的基本原理和SDRAM初始化.读.写及自动刷新操作的时序讲清楚了,在这一片博文中,Kevin来根据 ...
- 没有局域网环境,全是公网IP可以做LVS吗,该如何做了!请大家赐教!
没有局域网环境,全是公网IP可以做LVS吗,该如何做了!请大家赐教! 由 wjjava 在 周四, -- : 提交 LVS集群 现在有3台服务器,各有一个公网IP地址.IP地址形式如下: IP1:12 ...
- c++ [wrong]simple "Garbage Collector"
In fact, Ptr alone can accomplish the task mentioned below. Implementation see Ptr.h, main2.cpp. In ...
- eclipse: Program "g++" not found in PATH
gdb命令行调试虽然还行,但是确实不如图形界面的直观...个人还是不习惯,就开始鼓捣eclipse的c/c++IDE(VS2013安装需要IE10,蛋疼,懒得弄) Build一个C工程的时候报错.我安 ...
- 21:开发脚本管理服务端LVS案例
[root@lb03 scripts]# cat lv_manager.sh #!/bin/bash #定义只能是root用户执行 ];then echo "permission deny ...
- iptables进阶
ptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. filter负责过滤数据包,包括的规则链有,input,outp ...
- Python 之 ImportError: No module named ***
假设想使用非当前模块中的代码,须要使用Import.这个大家都知道. 假设你要使用的模块(py文件)和当前模块在同一文件夹.仅仅要import对应的文件名称就好,比方在a.py中使用b.py: imp ...
- snap方式nextcloud安装笔记
官方安装文档:https://docs.nextcloud.com/server/12/admin_manual/installation/source_installation.html#examp ...
- git undo last commit
$ git commit -m "Something terribly misguided" (1) $ git reset --soft HEAD~ (2) << e ...
- asp.net mvc FormsAuthentication一些问题
form验证最简单的一句 FormsAuthentication.SetAuthCookie(”userName", false); web.config里加上 <machine ...