集合(set)

  集合是一个无序、可变、不允许数据重复的容器

s = {11,22,33,'ccc'}
  • 无序,无法通过索引取值
  • 可变,可以添加和删除元素
s = {11,22,33,44}
s.add(999)
print(s) #{33, 999, 11, 44, 22}
  • 不允许数据重复
s = {11,22,33,44,55,33,44}
print(s) #{33, 11, 44, 22, 55}

一般什么时候用集合呢?就是想要维护一大堆的不重复的数据的时候。

  • 定义空集合时,只能使用set(),不能用{}

  独有功能

  添加元素

data = {'小明','晓虹','小白'}
data.add('小青')
print(data) #{'小青', '小明', '晓虹', '小白'}

  删除元素

data = {'小明','晓虹','小白'}
data.discard('小白')
print(data) #{'小明', '晓虹'}

  交集

  • 两个集合之间,找相同的元素
s1 = {'小明','晓虹','小白'}
s2 = {'晓晓','小白','大白痴'} s3 = s1 & s2
s4 = s1.intersection(s2)
print(s3,s4) #{'小白'}

  并集

  • 两个集合,合并在一起,重复的元素仅留一个
s1 = {'小明','晓虹','小白'}
s2 = {'晓晓','小白','大白痴'}
s3 = s1 | s2
s4 = s1.union(s2)
print(s3,s4) #{'晓虹', '晓晓', '大白痴', '小明', '小白'}

  差集

s1 = {'小明','晓虹','小白'}
s2 = {'晓晓','小白','大白痴'}
s3 = s1 - s2
s4 = s1.difference(s2)
print(s3,s4) #{'小明', '晓虹'}
#两个集合,s1中有的且s2中没有的值 s3 = s2 - s1
s4 = s2.difference(s1)
print(s3,s4) #{'晓晓', '大白痴'}
#两个集合,s2中有的且s1中没有的值

  公共功能

  减,计算差集

s1 = {'小明','晓虹','小白'}
s2 = {'晓晓','小白','大白痴'}

s3 = s1 - s2
print(s3) #{'小明', '晓虹'}

  &,计算交集

s1 = {'小明','晓虹','小白'}
s2 = {'晓晓','小白','大白痴'} s3 = s1 & s2
print(s3) #{'小白'}

  |,计算并集

s1 = {'小明','晓虹','小白'}
s2 = {'晓晓','小白','大白痴'} s3 = s1 | s2
print(s3) #{'晓虹', '晓晓', '大白痴', '小明', '小白'}

  长度

s = {'小明','晓虹','小白'}
data = len(s)
print(data) #3

  for循环

s = {'小明','晓虹','小白'}
for item in s:
print(item)

  转换

  • int/list/tuple/dict都可以通过set()转换为集合
s1 = '大丈夫'
s2 = set(s1)
print(s2) #{'夫', '丈', '大'} s1 = {11,22,33,44,22,11}
s2 = set(s1)
print(s2) #{33, 11, 44, 22} s1 = (11,22,33,44,22,11,)
s2 = set(s1)
print(s2) #{33, 11, 44, 22}

  元素必须可哈希

  集合的元素只能是int,bool,str,tuple,而list,set是不可哈希的

  • 转换成功
s1 = [11,22,33,44,11,3,99,22]
s2 = set(s1)
print(s2) #{33, 3, 99, 11, 44, 22}
  • 转换失败
s1 = [11,22,['阿斯顿','大扫荡'],33]
s2 = set(s1)
print(s2)

  集合查找速度特别

  • 低效率
list = ['阿斯顿','打底衫','小明']
if '小明' in list:
print('在')
else:
print('不在') tuple = ('阿斯顿', '打底衫', '小明',)
if '小明' in tuple:
print('在')
else:
print('不在')
  • 高效率
set = {'阿斯顿','打底衫','小明'}
if '小明' in set:
print('在')
else:
print('不在')

 

09、集合set的更多相关文章

  1. Windows7WithSP1/TeamFoundationServer2012update4/SQLServer2012

    [Info   @09:03:33.737] ====================================================================[Info   @ ...

  2. 《2013传智播客视频》-wmv,avi,mp4.目录

    \!--14俄罗斯方块\视频\.复习.avi; \!--14俄罗斯方块\视频\ 复习.avi; \!--14俄罗斯方块\视频\ 形状旋转.avi; \!--14俄罗斯方块\视频\ 判断形状能否变形.a ...

  3. js中的正则表达式【常用】

    正则表达式是一种用于处理字符串匹配的强大工具,正则的核心在于匹配语法. 以下是常用的匹配规则 . 除了换行符之外的任意一个字符 \ 转义符,取消后面一个字符的含义,使其成为一个普通字符 [] 括号里的 ...

  4. Java入门笔记 00-前言&目录

    前言:这本笔记记录的是Java基础部分的学习内容,大部分内容总结性的,包括: ---01 Java基础语法 ---02 数组 ---03 面向对象 ---04 异常处理 ---05 多线程 ---06 ...

  5. Java 集合系列 09 HashMap详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  6. Day_12【集合】扩展案例3_产生10个长度为10,不能重复,由数字0-9,小写字母和大写字母组成的字符串

    分析以下需求,并用代码实现 1.产生10个1-20之间的随机数要求随机数不能重复 2.产生10个长度为10的不能重复的字符串(里面只能出现大写字母.小写字母.0-9的数字),并遍历打印输出 代码 pa ...

  7. Day_11【集合】扩展案例4_删除长度大于5的字符串,删除元素包含0-9数字的字符串

    分析以下需求,并用代码实现 1.定义ArrayList集合,存入多个字符串 如:"ab1" "123ad" "bca" "dadf ...

  8. Java多线程系列--“JUC集合”09之 LinkedBlockingDeque

    概要 本章介绍JUC包中的LinkedBlockingDeque.内容包括:LinkedBlockingDeque介绍LinkedBlockingDeque原理和数据结构LinkedBlockingD ...

  9. Java 集合系列09之 Map架构

    概要 前面,我们已经系统的对List进行了学习.接下来,我们先学习Map,然后再学习Set:因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过 ...

  10. Java基础知识强化之集合框架笔记09:Collection集合迭代器使用的问题探讨

    1.Collection集合迭代器使用的问题探讨: (1)问题1:能用while循环写这个程序,我能不能用for循环呢?                  可以使用for循环替代. (2)问题2:不要 ...

随机推荐

  1. struct 和 class的区别

    struct和class如果按照在C的时代,还是有很大差别的. c中struct的定义如下: struct  结构名 {   成员表 }: 因为struct是一种数据类型,那么就肯定不能定义函数,所以 ...

  2. 关于TCP和UDP的通俗理解

    TCP和UDP是网络基础,很多公司面试也都会问到,今天我在这里,根据大神们的讲解,自己总结借鉴一下. 首先,先提一个问题:英雄联盟是TCP还是UDP? 这个问题对于游戏玩家,可能大多数人都没有想过.一 ...

  3. μC/OS-III---I笔记13---中断管理

    中断管理先看一下最常用的临界段进入的函数:进入临界段 OS_CRITICAL_ENTER() 退出临界段OS_CRITICAL_EXIT()他们两个的宏是这样的. 在使能中断延迟提交时: #if OS ...

  4. 英语能力考试 All In One

    英语能力考试 All In One 托福,雅思,托业 TOEIC 托业考试 Test of English for International Communication (TOEIC) 国际交流英语 ...

  5. Python3 & Decorators with arguments & @Decorators with arguments bug

    Python3 & Decorators with arguments & @Decorators with arguments bug @Decorators with argume ...

  6. HTTPS Proxy all in one

    HTTPS Proxy all in one HTTP Proxy Charles Proxy https://www.charlesproxy.com/ Proxy SwitchyOmega 轻松快 ...

  7. Chrome DevTools & Slow 3G Network

    Chrome DevTools & Slow 3G Network shortcuts https://developers.google.com/web/tools/chrome-devto ...

  8. asm 查看字节码

    a.asm global Start section .text inc dword [esi] push edi mov edi,[esp+0x14] λ nasm -f win32 a.asm - ...

  9. VAST二月上线交易所,打通NGK各大币种之间通道!

    1月20日,管理着超过8.7万亿美元资产的全球最大资产管理公司贝莱德似乎已批准其旗下两个相关基金--贝莱德全球分配基金公司和贝莱德基金投资比特币期货.提交给美国证券交易委员会的招股说明书文件显示,贝莱 ...

  10. C# NOPI 项目实战(经典)(可下载项目源码)

    1 -.首先说明下项目目的: 之前我有写过一篇  "NPOI操作EXCEL" 这篇文章主要介绍了如何安装NPOI,以及NPOI具体如何使用,并且用具体实例介绍了excel导入到da ...