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 ...
随机推荐
- [UWP] 用 AudioGraph 来增强 UWP 的音频处理能力——AudioFrameInputNode
上一篇心得记录中提到了 AudioGraph, 描述了一下 什么是 AudioGraph 以及其中涉及到的各种类型的 节点(Node). 这一篇就其中比较有意思的 AudioFrameInputNod ...
- RunC容器逃逸漏洞席卷业界,网易云如何做到实力修复?
近日,业界爆出的runC容器越权逃逸漏洞CVE-2019-5736,席卷了整个基于runC的容器云领域,大量云计算厂商和采用容器云的企业受到影响.网易云方面透露,经过技术团队的紧急应对,网易云上的容器 ...
- js按钮 防重复提交
给html 按钮加id属性 例: <button id="addBtn" onclinck="check()"> </button&g ...
- Python内置类型(1)——真值测试
python中任何对象都能直接进行真假值的测试,用于if或者while语句的条件判断,也可以做为布尔逻辑运算符的操作数 python中任何对象都能直接进行真假值的测试,而不需要额外的类型转换 这一点是 ...
- springmvc的异步处理
关于异步的好处我在这里就不多说了,自从servlet3.1规范发布以来,控制层的异步处理也越来越多的被人提及.而Spring5的webflux诞生也意味着Spring全方位对异步提供了支持. ...
- android 代码混淆示例
参考其它资料为项目代码做了一下混淆 项目中使用了 slidingmenu actionbarsherlock fastjson volley httpclient 等第三方库, 并使用了 ...
- 读书笔记(06) - 语法基础 - JavaScript高级程序设计
写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ...
- 从零开始学 Web 之 CSS(五)可见性、内容移除、精灵图、属性选择器、滑动门
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...
- Shell脚本 | 性能测试之内存
性能测试中,内存是一个不可或缺的方面.比如说在跑 Monkey 的过程中,如何准确持续的获取到内存数据就显得尤为重要. 今天分享一个脚本,可以在给定时间内持续监控内存,最后输出成一份 CSV 文件,通 ...
- Feign自定义编程配置
介绍 在Spring Cloud中,Feign的默认配置类是FeignClientsConfiguration,该类定义了Feigh默认使用的编码器.解码器.所使用的契约等.Spring Cloud允 ...