008 Python语法之集合

set集合

集合特点

  1. 天生去重
  2. 无序,每次打印都无序
  3. 没有索引,循环只能for item进行遍历

集合的操作

set1 = {123, "abc", True}
set2 = {123, "abc", False}

差集

set2.difference(set1)

set2 - set1 = {False}

并集

set1.union(set2)

set1 | set2 = {False, True, 'abc', 123}

交集

set1.intersection(set2)

set1 & set2 = {'abc', 123}

补集

set1.symmetric_difference(set2)

set1 ^ set2 = {False, True}

子集

set1.issubset(set2)

父集

set1.issuperset(set2)

一些集合的方法

set() 强制转换成集合,并去重复

set1 = set((1,2,3,4))  # 将元组转换成集合
set1 = set((1,2,3,4,4,3,2,1))  # 将元组转换成集合

add(x) # 添加元素x

set1.add(4)

update(sqe)# 更新集合

set1 = {1, 2, 3, 4}
set1.update([7,5,8,0])

update方法介绍

  1. 参数可以是集合,列表,字符串
  2. 返回值为None,会在原集合上进行更新

remove(x) # 移除元素x

set1.remove(4)

remove方法介绍

  1. 删除,不存在就报错
  2. 第一个参数是移除的元素

discard(x) # 删除元素

myset.discard(1)    

discard(x)

  1. 删除,不存在不会报错

difference(set)

newset = set1.difference(set2)

difference方法介绍(差集)

  1. 显示set1中set2没有的元素
  2. 返回是一个新的集合

利用枚举进行索印遍历

for idx,iddata in enumerate(myset):
    print(idx, iddata)

其他类型转换

set1 = set()
set1 = set([1,2,3,4,5,4,3,2,1])
set1 = set((1,2,3,4,5,4,3,2,1))
set1 = set({1:2,3:4})
set1 = set("abcde")

数据转化详解

  1. list转换成集合会将每一个元素去重之后添加进集合
  2. tuple也是会将每一个元素去重之后添加进集合
  3. 字典仅仅会将键全部存储在集合中
  4. 字符串会将每一个元素去重之后添加进集合

不可变集合 frozenset <class 'frozenset'>

set3 = frozenset([1, 2, 3, 4])
set3.add(5)     # 会报错,不可变

利用枚举进行索印遍历

for idx,iddata in enumerate(myset):
    print(idx, iddata)

推荐阅读更多精彩内容