集合-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()

最新文章

  1. Windows进程间通信—命名管道
  2. Python 变量类型
  3. EF下泛型分页方法,更新方法
  4. python中最简单的多进程程序
  5. Selenium2学习-004-WebUI自动化实战实例-002-百度登录
  6. notpad++安装python插件
  7. DWR基本配置
  8. HTML 5 Canvas
  9. heidsoft logo
  10. 第一个MapReduce程序
  11. 爬取知乎百万信息之UrlTask
  12. 解决 dyld: Library not loaded:Reason: image not found
  13. thinkphp第二天
  14. boost::asio async_write也不能保证一次发完所有数据 二
  15. 给你的站点加入 console.js
  16. visual studio高效率插件及快捷键
  17. 团队作业4---第一次项目冲刺(ALpha)版本 第六天
  18. tomcat 内存大小配置
  19. 第4章 PCIe总线概述
  20. masm中list文件和宏的一些常用编译调试查看方法

热门文章

  1. JQuery下载及选择器总结
  2. Codeforces Round #499 (Div. 2) C. Fly(数学+思维模拟)
  3. Javascript高级编程学习笔记(2)—— Script标签
  4. Swift5 语言指南(十九) 错误处理
  5. Shell-15--sed
  6. LeetCode--No.013 Roman to Integer
  7. Spring Boot 2.0正式发布,新特性解读
  8. RecyclerView的简单使用
  9. SQL 必知必会&#183;笔记&lt;5&gt;创建计算字段
  10. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十七):登录验证码实现(Captcha)