python中集合-set
集合-set
- 集合是高中数学中的一个概念
- 一堆确定的无序的唯一的数据,集合中每一个数据成为一个元素
# 集合的定义
s = set()
print(type(s))
print(s)
print("*"*30) # 此时,大括号内一定要有值,否则定义出的是一个dict
s = {}
print(type(s))
print(s)
print("*"*30) s = {1,2,3,4,5}
print(type(s))
print(s)
<class 'set'>
set()
******************************
<class 'dict'>
{}
******************************
<class 'set'>
{1, 2, 3, 4, 5}
# 如果只是用大括号定义,则定义的是一个dict类型
d = {}
print(type(d))
print(d)
<class 'dict'>
{}
集合的特征
- 集合内数据无序,即你无法使用索引和分片
- 集合内部数据,具有唯一性,可以用来排除重复数据
- 集合内部数据,str, int, float, tuple,冰冻集合等,即内部只能放置可哈希数据
集合序列操作
# 成员检测
# in not in
s = {4,5,"i", "love", "python"}
print(s) if "love" in s:
print("爱呀") if "haha" not in s:
print("挨个锤子")
{'love', 4, 5, 'python', 'i'}
爱呀
挨个锤子
集合便利操作
# for 循环
s = {4,5,"i", "love", "python"} for i in s:
print(i, end=" ")
# 得到的结果就是随机的
love 4 5 python i
# 带有元组的集合遍历
s = {(1,2,3), ("i", "love", "python"), (4,5,6)} for k,m,n in s:
print(k, "--", m, "--", n) for k in s:
print(k)
i -- love -- python
4 -- 5 -- 6
1 -- 2 -- 3
('i', 'love', 'python')
(4, 5, 6)
(1, 2, 3)
集合的内涵
# 普通集合的内涵
# 以下的集合
s = {1,2,3,5,6,2,3,5,1,2,3,2,2,8,4,6,2}
print(s) # 普通集合的内涵
ss = {i for i in s if i % 2==0}
print(ss)
{1, 2, 3, 4, 5, 6, 8}
{8, 2, 4, 6}
# 带有条件的集合内涵
ss = {i for i in s if i % 2==0}
print(ss)
{8, 2, 4, 6}
# 多重循环的集合内涵
s1 = {1,2,3,4}
s2 = {"i","love","python"}
s = {m*n for m in s2 for n in s1}
print(s)
{'love', 'lovelovelove', 'iiii', 'pythonpythonpythonpython', 'lovelovelovelove', 'ii', 'iii', 'pythonpython', 'python', 'lovelove', 'pythonpythonpython', 'i'}
集合函数/关于集合的函数
# len, max, min:跟其他基本函数一致
s = {43,23,56,223,4,2,1222,4,323,1}
print(len(s))
print( max(s))
print(min(s))
9
1222
1
# set:生成一个集合
l = [1,2,3,4,3,23,1,2,3,4]
s = set(l)
print(s)
{1, 2, 3, 4, 23}
# add:向集合内添加元素
s = {1}
s.add(2)
print(s)
{1, 2}
# clear
s = {1,5,6,8}
print(s)
print(id(s))
s.clear()
print(s)
print(id(s))
# 结果表明clear函数是原地清空数据
{8, 1, 5, 6}
139677107966472
set()
139677107966472
# copy:拷贝
# remove:移除制定的值,直接改变原有值,如果要删除的值不存在,报错
# discard:移除集合中指定的值,跟remvoe一样,但是如果要删除的话,不报错
s = {23,3,4,5,1,2,3}
s.remove(4)
print(s)
s.discard(1)
print(s) print("*" * 20)
s.discard(1100)
print(s) s.remove(1100)
print(s) # 为啥remove不存在的值会报keyerror 思考?
{1, 2, 3, 5, 23}
{2, 3, 5, 23}
********************
{2, 3, 5, 23}
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-54-db7ca460675a> in <module>()
12 print(s)
13
---> 14 s.remove(1100)
15 print(s)
16 KeyError: 1100
# pop 随机移除一个元素
s = {1,5,2,3,5,6}
d = s.pop()
print(s)
print(d)
{2, 3, 5, 6}
1
# 集合函数
# intersection();交际
# difference():差集
# union:并集
# issubset: 检查一个集合是否为另一个子集
# issuperset: 检查一个集合是否为另一个超集
s1 = {1,2,3,4,5,6}
s2 = {5,6,7,8,9} s_1 = s1.intersection(s2)
print(s_1) s_2 = s1.difference(s2)
print(s_2) s_3 = s1.issubset(s2)
print(s_3)
{5, 6}
{1, 2, 3, 4}
False
# 集合数学操作
s1 = {1,2,3,4,5,6}
s2 = {5,6,7,8,9} s_1 = s1 - s2
print(s_1) s_2 = s1 + s2
print(s_2)
# 此处不支持数学操作中的+操作
{1, 2, 3, 4}
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-58-1393f56445b9> in <module>()
6 print(s_1)
7
----> 8 s_2 = s1 + s2
9 print(s_2) TypeError: unsupported operand type(s) for +: 'set' and 'set'
frozen set:冰冻集合¶
- 冰冻和就是不可以进行任何修改的集合
- frozenset是一种特殊集合
# 创建
s = frozenset()
print(type(s))
print(s)
<class 'frozenset'>
frozenset()
python中集合-set的更多相关文章
- Python中集合set()的使用及处理
在Python中集合(set)与字典(dict)比较相似,都具有无序以及元素不能重复的特点 1.创建set 创建set需要一个list或者tuple或者dict作为输入集合 重复的元素在set中会被自 ...
- python中集合set,字典dict和列表list的区别以及用法
python中set代表集合,list代表列表,dict代表字典 set和dict的区别在于,dict是存储key-value,每一个key都是唯一的,set相对于dict存储的是key,且key是唯 ...
- Python学习-31.Python中集合的一些操作
add方法: s = {1,2,3} s.add(4) print(s)# {1, 2, 3, 4} 同list的append方法,若调用s.add(3),则不会有任何影响.这点与C#中的HashSe ...
- (转)Python中集合(set)的基本操作以及一些常见的用法
原文:http://blog.51cto.com/10616534/1944841 Python除了List.Tuple.Dict等常用数据类型外,还有一种数据类型叫做集合(set),集合的最大特点是 ...
- Python中集合的操作
Python集合的基本详情 集合是无序的 集合是可变数据类型 集合属于不可哈希范围 集合自动去重 集合的操作 set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} ...
- python中集合及运算
一.集合set()的特点: 集合的特点:有的可变,有的不可变:元素无次序,不可重复. 集合中的元素不能重复,可作为一种简单高效的元素去重方式. 集合没有索引,它的元素无次序,不是序列. 利用set() ...
- Python中集合类型(set)学习小结
set 是一个无序的元素集合,支持并.交.差及对称差等数学运算, 但由于 set 不记录元素位置,因此不支持索引.分片等类序列的操作. 初始化 复制代码代码如下: s0 = set()d0 = {}s ...
- Python中集合类型的使用
集合类型 多个不重复元素的无序组合 集合类型的表示 建立非空集合的方式可以用{}来表示 采用set()来表示 集合类型的操作符 S|T 返回一个新集合,这个集合包含S与T中的所有元素. S-T 返回一 ...
- python中集合
去重 无序 没有索引 #remove 删除元素 >>> s1 = {1,2,3,4,5} >>> s1.remove(2) >>> print(s ...
随机推荐
- Sequential Container
Notes from C++ Primer Initialize container by iterator When copy a container to another, the contain ...
- Swift5 语言指南(十四) 下标
类,结构和枚举可以定义下标,下标是用于访问集合,列表或序列的成员元素的快捷方式.您可以使用下标按索引设置和检索值,而无需单独的设置和检索方法.例如,您可以访问在元素Array实例作为someArray ...
- speex与webrtc回声消除小结
回声消除AEC包含: 延时估计对齐+线性自适应滤波器+NLP(双讲检测.处理)+舒适噪声CNG 一.speex aec 1.没有NLP 2.只考虑实时DSP系统,即是没有延时对齐等 3.自适应滤波 ...
- Testing - 软件测试知识梳理 - 基础概念
测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计.实施.维护的的整个生命周期过程. 仅仅发现Bug是测试的初步,而分析出根本原因推动问题的解决,却要有很深的功底. 不同的测试岗位从事不同的 ...
- Xamarin.Android 调用手机拍照功能
最近开发Android遇到了调用本地拍照功能,于是在网上搜了一些方法,加上自己理解的注释,在这儿记录下来省的下次用时候找不到,同事也给正在寻找调用本地拍照功能的小伙伴一些帮助~ 实现思路:首先加载-- ...
- .net core build docker image
1.创建.net core web项目 2.添加Dockerfile文件 # 基于microsoft/dotnet:2.1-aspnetcore-runtime构建Docker Image FROM ...
- centos通过Supervisor配置.net core守护进程
安装Supervisor easy_install supervisor 生成默认配置文件 echo_supervisord_conf > /etc/supervisord.conf 生成的配置 ...
- jq通过对象获取其ID值,再简单ajax传到后台改值
<tbody> <tr> <#if scopes?exists> <#list scopes as scopes> <td id='${(scop ...
- TCP/IP 笔记 - 地址解析协议
地址解析协议(ARP)提供了一种在IPv4地址和各种网络技术使用的硬件地址之间的映射.ARP仅用于IPv4,IPv6使用邻居发现协议,它被合并入ICMPv6.地址解析是发现两个地址之间的映射关系的过程 ...
- Android FileObserver 实现原理(inotify)
目录 0x0前言 0x01 FileObserver 使用实例 0x02 FileObserver 实现原理 0x04 完整Demo下载地址 0x0前言 之前在分析某个Android平台加固壳子的时候 ...