python day08 set 基本练习

目录:

集合 set

集合Set的特性

  1. 集合是可变的容器
  2. 集合内的数据对象都是唯一的(不能重复多次的)
  3. 集合是无序的存储结构,集合中的数据没有先后顺序关系
  4. 集合内的元素必须是不可变对象
  5. 集合是可迭代对象
  6. 集合是相当于只有键没有值的字典(键则是集合的数据)

创建集合

  1. 创建空的集合:
    set()
  2. 创建非空的集合:
    s = {1, 2, 3, 4}
  3. 集合的构造函数 set
    set() 创建一个空的集合对象(不能用{}来创建空集合)
    set(iterable) 用可迭代对象创建一个新的集合对象
  4. 示例:
    s = set() # s 为空集合
    s = {3,5,7,9}
    s = set(“ABC”) # s = {‘A’, ‘B’, ‘C’}
    s = set({1:’1’, 2:”2”, 5:’5’}) # s = {1,2,5}
    s = set(range(1:10:3)) # s = {1,4,7}

集合的运算:

  1. 交集, 并集,补集,子集,超集
  2. 运算符:
    & | - ^ < <= > >= == !=
    in / not in
  3. & 生成两个集合的交集
    s1 = {1, 2, 3}
    s2 = {2, 3, 4}
    s1 & s2 # {2, 3}
  4. | 生成两个集合的并集
    s1 = {1, 2, 3}
    s2 = {2, 3, 4}
    s1 | s2 # {1, 2, 3, 4}
  5. 生成两个集合的补集
    s1 = {1, 2, 3}
    s2 = {2, 3, 4}
    s1 - s2 # {1} #生成属性s1但不属于s2的所有元素的集合
  6. 生成两个集合的对称补集
    s1 = {1, 2, 3}
    s2 = {2, 3, 4}
    s1 ^ s2 # {1, 4}
  7. > 判断一个集合是另一个集合的超集
  8. < 判断一个集合是别一个集合的子集
    {1, 2, 3} > {1, 2} # True
    {2, 3, 1} > {3, 2} # True
    {2, 3, 4} < {1, 2, 3, 4} # True
  9. == / != 集合相同和不同
    {1, 2, 3} == {3, 2, 1} # True
    {1, 2, 3} != {2, 3, 4} # True
  10. in / not in 运算符
    in 等同于字典的in, 用于集合中,当某个值存在于集合中,返回True,否则返回False
    not in 与 in 返回值相反
    集合的 in / not in 运算符的速度快于序列

  11. 能用于集合的函数:
    len(x)
    max(x)
    min(x)
    sum(x)
    any(x)
    all(x)

  12. 集合是可迭代对象

  13. 集合练习:
    经理有: 曹操,刘备,周瑜
    技术员有: 曹操,周瑜,张飞,赵云
    用集合求:

    1. 即是经理也是技术员的有谁?
    2. 是经理,但不是技术员的有谁?
    3. 是技术人员,但不是经理的都有谁?
    4. 张飞是经理吗?
    5. 身兼一职的人都有谁?
    6. 经理和技术员共有几个人?
  14. python3 集合中的常用方法:
    见:
    >>> help(set)
    或:
    python_base_docs_html/set_????.html

  15. 集合推导式

    1. 集合推导式是用可迭代对象生成集合的表达式
    2. 语法:
      { 表达式 for 变量 in 可迭代对象 [if 真值表达式]}
      注: [] 内的内容可省略

    3. 示例:
      numbers = (1,2,3,2,2,3,3,4,5)
      s = {x for x in numbers} # 去除重复的元素

固定集合 frozenset

固定集合特性

  1. 固定集合是不可变的,无序的,含有不重复元素的集合
  2. 作用:
    固定集合可以作为字典的键,还可以作为集合的值

固定集合创建

  1. 创建空的固定集合
    fs = frozenset()
  2. 创建非空的固定集合:
    frozenset(iterable) 用可迭代对象创建新的固定集合
    示例:
    fz = frozenset([2,3,5,7]) # frozenset({2, 3, 5, 7})
  3. 运算:
    & 交集
    | 并集
    • 补集
      ^ 对称补集
      in /not in 运算
      < <= > >= == !=
      (以上运算 与 set 的运算完全相同)
  4. 固定集合的方法:
    相当于集合的全部方法(去掉修改集合的方法)

列表 ,字典,集合对象优缺点:

  1. 都为可变
  2. 列表的尾部插入速度比较快,查中间插入和头插数据速度慢
  3. 列表有序
  4. 字典添加,删除,修改速度快于列表
  5. 集合的添加,删除快于列表,且不能存储重复元素

练习:

  1. 输入一段字符串,打印所有输入过的字符串,但重复的只打印一次,(不要求打印的顺序与输入顺序一致)
    输入: abcdabcaba
    打印:
    a b c d

  2. 输入一段字符串,打印出这个字符串中出现过的字符及出现过的次数:
    如:
    输入:abcdabcaba
    打印如下:
    a: 4次
    b: 3次
    d: 1次
    c: 2次
    注: 不要求打印顺序

练习:

  1. 有一只小猴子,摘了很多桃.
    第一天吃了全部桃子的一半,感觉不饱又吃了一个
    第二天吃了剩下桃子的一半,感觉不饱又吃了一个
    …. 以此类推
    到第十天,发现只剩下一个了
    请问第一天摘了多少个桃?
  2. 完全数
    1 + 2 + 3 = 6 (6为完全数)
    1, 2, 3都为6的因数(能被一个数x整除的数为y,则y为x的因数)
    1 x 6 = 6
    2 x 3 = 6
    完全数是指除自身以外的所有的因数之和相加等于自身的数
    求 4 ~ 5个完全数,并打印出来
    答案:
    6
    28
    496
    8128
  3. 任意输入一个数n代表三角形的高度, 打印此形将的三角形
    如:
    请输入:4
    打印如下:
    1
    121
    12321
    1234321
  4. 将第三题打印三角形变为打印棱形
    1
    121
    12321
    1234321
    12321
    121
    1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值