Python学习笔记day09,元组,Python集合set,集合方法,集合推导式

集合(set)

  1. 集合是可变的容器
  2. 集合内的数据对象都是唯一的(不能重复的)
  3. 集合内部是无序的存储结构,集合中的数据没有先后关系
  4. 集合内的元素必须是不可变对象
  5. 集合是可迭代对象

创建空的集合
  • set()
创建非空的集合
  • s = set("aabbcc")
  • s = {2,3,4,5,6}
集合的构造函数
  • set() 创建一个空的集合(不能用{}来创建)
  • set(iterable)用可迭代对象创建一个新的集合
  • 示例:

    s = set()       # s = { }
    s = {2,3,4,5,6}  # s = {2,3,4,5,6}
    s = set("abc")  # s = {'a', 'b', 'c'}
    s = set("aabbcc")   # s = {'a', 'b', 'c'}   --->集合内不能重复
    s = set( { 1:'1',  2:'2',  3:'3' })         # s = {1,2,5}
    s = set( ("abc", "123", True ) )            # s = { "abc", "123", True }
    s = set( { 1:2 }, { 1:'1'} )        # 错误,集合内都是不可变对象
    s = set( [1,2,3], ['a', 'a', 'c'] )     # 错误,集合内都是不可变对象
集合的运算符号
符号含义示例说明:s1 = {1,2,3} ; s2 = {2,3,4}
&交集s1 & s2 = { 2 , 3 }
\|并集s1 \| s2 = { 1, 2, 3, 4 }
-补集s1 - s2 = { 1 }
^对称补集s1 - s2 = { 1, 4 }
<子集判断一个集合是另一个集合的子集(小学知识略
>超集判断一个集合是另一个集合的超集(小学知识略
==相同判断两个集合是否相同小学知识略
!=不等于小学知识略
>=,<=大小于等于小学知识略
in / not in 运算
  • 和字典、列表使用in运算的方法一致

    函数说明
    len(x)返回集合的长度
    max(x)返回集合中最大的数
    min(x)返回集合中最小的数
    sum(x)返回集合中所有元素的和
    any(x)真值测试,判断集合中是否有真值
    all(x)真值测试,集合中所有元素为真,返回真
用于集合的方法
方法说明
S.add(e)在集合中添加一个新的元素e;如果元素已经存在,则不添加
S.remove(e)从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误
S.discard(e)从集合S中移除一个元素e
S.clear()清空集合内的所有元素
S.copy()将集合进行一次浅拷贝
S.pop()从集合S中删除一个随机元素;如果此集合为空,则引发KeyError异常
S.update(s2)Ss2得到的全集更新变量S
集合练习题

经理有:曹操、刘备、孙权
技术人员:曹操、孙权、张飞、关羽
用集合求出:
1. 即是经理又是技术人员的有谁?
2. 是经理,但不是技术人员的有谁?
3. 是技术人员,但不是经理的有谁?
4. 张飞是经理吗?
5. 身兼一职的人有谁?
6. 经理和技术人员一共有几个人?

答案
    jingli = set(("曹操","刘备","孙权"))
    jishu = set(("张飞","刘备","孙权","关羽"))
    print("即是经理又是技术人员的有:",','.join(jingli&jishu))         # 即是经理又是技术人员的有: 孙权,刘备
    print("是经理,但不是技术人员的有:",','.join(jingli-jishu))       # 是经理,但不是技术人员的有: 曹操
    print("是技术人员,但不是经理的有:",','.join(jishu-jingli))       # 是技术人员,但不是经理的有: 关羽,张飞
    print("张飞 %s 经理"%( "是" if "张飞" in jingli else "不是"))    # 张飞 不是 经理
    print("身兼一职的人有:",','.join(jingli^jishu))                  # 身兼一职的人有: 张飞,关羽
    print("经理和技术人员一共有%d个"%len(jingli|jishu))               # 经理和技术人员一共有5个

集合推导式
  • { x for x in set_list [ if 表达式 ]}
    用法和列表推导式,字典推导式是一样的,详细看我的上一篇文章
固定集合

固定集合是不可变的,无序的,含有唯一的元素的集合

  • 作用
  • 固定集合的构造函数 frozenset(iterable)
    1. frozenset( ( 1, 2, 3, 4) )
    2. frozenset( [ frozenset(( 1, 2, 3, 4)), 5, 6 ] ) 可以嵌套
  • 固定集合的运算
    运算:和一般的集合
    方法相当于 集合的全部方法 去掉修改集合的方法
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值