集合-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的更多相关文章

  1. Python中集合set()的使用及处理

    在Python中集合(set)与字典(dict)比较相似,都具有无序以及元素不能重复的特点 1.创建set 创建set需要一个list或者tuple或者dict作为输入集合 重复的元素在set中会被自 ...

  2. python中集合set,字典dict和列表list的区别以及用法

    python中set代表集合,list代表列表,dict代表字典 set和dict的区别在于,dict是存储key-value,每一个key都是唯一的,set相对于dict存储的是key,且key是唯 ...

  3. Python学习-31.Python中集合的一些操作

    add方法: s = {1,2,3} s.add(4) print(s)# {1, 2, 3, 4} 同list的append方法,若调用s.add(3),则不会有任何影响.这点与C#中的HashSe ...

  4. (转)Python中集合(set)的基本操作以及一些常见的用法

    原文:http://blog.51cto.com/10616534/1944841 Python除了List.Tuple.Dict等常用数据类型外,还有一种数据类型叫做集合(set),集合的最大特点是 ...

  5. Python中集合的操作

    Python集合的基本详情 集合是无序的 集合是可变数据类型 集合属于不可哈希范围 集合自动去重 集合的操作 set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} ...

  6. python中集合及运算

    一.集合set()的特点: 集合的特点:有的可变,有的不可变:元素无次序,不可重复. 集合中的元素不能重复,可作为一种简单高效的元素去重方式. 集合没有索引,它的元素无次序,不是序列. 利用set() ...

  7. Python中集合类型(set)学习小结

    set 是一个无序的元素集合,支持并.交.差及对称差等数学运算, 但由于 set 不记录元素位置,因此不支持索引.分片等类序列的操作. 初始化 复制代码代码如下: s0 = set()d0 = {}s ...

  8. Python中集合类型的使用

    集合类型 多个不重复元素的无序组合 集合类型的表示 建立非空集合的方式可以用{}来表示 采用set()来表示 集合类型的操作符 S|T 返回一个新集合,这个集合包含S与T中的所有元素. S-T 返回一 ...

  9. python中集合

    去重 无序 没有索引 #remove 删除元素 >>> s1 = {1,2,3,4,5} >>> s1.remove(2) >>> print(s ...

随机推荐

  1. Sequential Container

    Notes from C++ Primer Initialize container by iterator When copy a container to another, the contain ...

  2. Swift5 语言指南(十四) 下标

    类,结构和枚举可以定义下标,下标是用于访问集合,列表或序列的成员元素的快捷方式.您可以使用下标按索引设置和检索值,而无需单独的设置和检索方法.例如,您可以访问在元素Array实例作为someArray ...

  3. speex与webrtc回声消除小结

    回声消除AEC包含:   延时估计对齐+线性自适应滤波器+NLP(双讲检测.处理)+舒适噪声CNG 一.speex aec 1.没有NLP 2.只考虑实时DSP系统,即是没有延时对齐等 3.自适应滤波 ...

  4. Testing - 软件测试知识梳理 - 基础概念

    测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计.实施.维护的的整个生命周期过程. 仅仅发现Bug是测试的初步,而分析出根本原因推动问题的解决,却要有很深的功底. 不同的测试岗位从事不同的 ...

  5. Xamarin.Android 调用手机拍照功能

    最近开发Android遇到了调用本地拍照功能,于是在网上搜了一些方法,加上自己理解的注释,在这儿记录下来省的下次用时候找不到,同事也给正在寻找调用本地拍照功能的小伙伴一些帮助~ 实现思路:首先加载-- ...

  6. .net core build docker image

    1.创建.net core web项目 2.添加Dockerfile文件 # 基于microsoft/dotnet:2.1-aspnetcore-runtime构建Docker Image FROM ...

  7. centos通过Supervisor配置.net core守护进程

    安装Supervisor easy_install supervisor 生成默认配置文件 echo_supervisord_conf > /etc/supervisord.conf 生成的配置 ...

  8. jq通过对象获取其ID值,再简单ajax传到后台改值

    <tbody> <tr> <#if scopes?exists> <#list scopes as scopes> <td id='${(scop ...

  9. TCP/IP 笔记 - 地址解析协议

    地址解析协议(ARP)提供了一种在IPv4地址和各种网络技术使用的硬件地址之间的映射.ARP仅用于IPv4,IPv6使用邻居发现协议,它被合并入ICMPv6.地址解析是发现两个地址之间的映射关系的过程 ...

  10. Android FileObserver 实现原理(inotify)

    目录 0x0前言 0x01 FileObserver 使用实例 0x02 FileObserver 实现原理 0x04 完整Demo下载地址 0x0前言 之前在分析某个Android平台加固壳子的时候 ...