零基础学Python(27、28)

 

集合

创建集合方法:

  1. num2 = {1,2,3,4,5}
    >>> type(num2)
    <class 'set'>
    
  2. >>> set2 = set([1,2,3,4,5,5,4,3,2,1,'小甲鱼'])
    >>> set2
    {'小甲鱼', 1, 2, 3, 4, 5}
    

访问集合中的值:

>>> for each in set2:
	print(each)

	
小甲鱼
1
2
3
4
5

判断集合中的值:

>>> 6 in set2
False
>>> 5 in set2
True

不可变集合:

>>> num3 = frozenset([1,2,3,4,5])
>>> num3.add(8)
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    num3.add(8)
AttributeError: 'frozenset' object has no attribute 'add'

集合类型内建方法总结

集合(s).方法名 等价符号 方法说明
s.issubset(t) s <= t 子集测试(允许不严格意义上的子集):s 中所有的元素都是 t 的成员
  s < t 子集测试(严格意义上):s != t 而且 s 中所有的元素都是 t 的成员
s.issuperset(t) s >= t 超集测试(允许不严格意义上的超集):t 中所有的元素都是 s 的成员
  s > t 超集测试(严格意义上):s != t 而且 t 中所有的元素都是 s 的成员
s.union(t) s | t 合并操作:s “或” t 中的元素
s.intersection(t) s & t 交集操作:s “与” t 中的元素
s.difference s - t 差分操作:在 s 中存在,在 t 中不存在的元素
s.symmetric_difference(t) s ^ t 对称差分操作:s “或” t 中的元素,但不是 s 和 t 共有的元素
s.copy()   返回 s 的拷贝(浅复制)
以下方法仅适用于可变集合    
s.update s |= t 将 t 中的元素添加到 s 中
s.intersection_update(t) s &= t 交集修改操作:s 中仅包括 s 和 t 中共有的成员
s.difference_update(t) s -= t 差修改操作:s 中包括仅属于 s 但不属于 t 的成员
s.symmetric_difference_update(t) s ^= t 对称差分修改操作:s 中包括仅属于 s 或仅属于 t 的成员
s.add(obj)   加操作:将 obj 添加到 s
s.remove(obj)   删除操作:将 obj 从 s 中删除,如果 s 中不存在 obj,将引发异常
s.discard(obj)   丢弃操作:将 obj 从 s 中删除,如果 s 中不存在 obj,也没事儿^_^
s.pop()   弹出操作:移除并返回 s 中的任意一个元素
s.clear()   清除操作:清除 s 中的所有元素

第27课课后作业

  1. 请问集合的唯一作用是什么?

    答案:

    集合元素的唯一性

  2. 如果你希望创建的集合不变,应该怎么做?

    答案:

    frozenset([1,2,3,4,5])
    
  3. 请问如何确定一个集合里边有多少个元素?

    答案:

    >>> len(num3)
    5
    
  4. 目测一下代码会打印什么内容?

    >>> num_set = set([1,2,3,4,5])
    >>> num_set[0]
    

    答案:

    会报错,因为集合无序。

  5. 请问set1 = {[1,2]}set1 = set([1,2]) 执行的结果是一样的吗?

    答案:

    >>> set1= set([1,2])
    >>> set1
    {1, 2}
    >>> set2 = {[1,2]}
    Traceback (most recent call last):
      File "<pyshell#31>", line 1, in <module>
        set2 = {[1,2]}
    TypeError: unhashable type: 'list'
    

    列表不是可哈希类型,列表可变。

    集合和字典储存方式一样,地址一一对应且无序排列。

  6. 打开你的IDLE, 输入set1 = {1,1.0},你会发现什么?

    答案:

    >>> set1 = {1, 1.0}
    >>> set1
    {1}
    
  7. 请问如何给集合添加和删除元素?

    答案:

    >>> set1 ={0,1,2,3,4,5,'小甲鱼','小鱿鱼'}
    >>> set1.add('小丑鱼')
    >>> set1
    {0, 1, 2, 3, 4, 5, '小甲鱼', '小丑鱼', '小鱿鱼'}
       
    >>> set1.remove(1)
    >>> set1
    {0, 2, 3, 4, 5, '小甲鱼', '小丑鱼', '小鱿鱼'}