python基础08_set

Posted 枫若雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础08_set相关的知识,希望对你有一定的参考价值。

关于前几次课的回顾:

#!/usr/bin/env python
# coding:utf-8

## 字符串  数字   列表   元组   字典

## 可变:列表  字典
## 不可变:字符串, 数字, 元组

name = alex
print(id(name))

name = ssb
print(id(name)) # 修改变量的值 id 的变化证明是不可变类型

## 访问顺序
# 直接访问:数字
# 顺序访问:字符串  列表  元组
# 映射: 字典  速度快,但占内存大


## 存放元素个数:
# 容器类型:列表,元组,字典
# 原子:数字,字符串

开始学习set

#!/usr/bin/env python
# coding:utf-8

s = {ss,1,3,2,4,6,8,2,4}

print(s,type(s))

# 注意和字典的区别
# 集合是无序的
# 不同元素组成, 即没有相同元素
# 元素必须是不可变类型

for i in s:
    print(i)

s1 = {(11,22,33,),44}
print(s1)

s2 = set(hello) # 自动去重
print(s2)

list1 = [alex,ees,ddef,ees]
print(list1)

s3 = set(list1)
print(s3)

s.add(ddc)
s.add(8)
print(s)

s3.clear()
print(s3)

s4 = s.copy()
print(s4)

s4.pop() # 随机删除一个元素
print(s4)

s.remove(ddc) # 指定删除
# s.remove(‘aaa‘) # 如果指定的没在,将出错
v = s.discard(aaa) # 如果指定的没在,删除不成功也不报错。
print(s)

关于set的交差并补

#!/usr/bin/env python
# coding:utf-8

lis1 = [tom, jerry, andy, anna]
lis2 = [kathy, jerry, andy, joe]

s1 = set(lis1)
s2 = set(lis2)

# 求交集 (共有的部分)
print(s1, s2)
print(s1.intersection(s2))
print(s1 & s2)

# 求并集 (合并且去重)
print(s1.union(s2))
print(s1 | s2)

# 求差集 (减去s1中有s2的部分,得到剩余的)
print(s1.difference(s2))
print("s1剩下:", s1 - s2)
print("s2剩下:", s2 - s1)

# 求交差补集 (去掉共有的,留下各自私有的)
print(交叉补集, s1.symmetric_difference(s2))
print(交叉补集, s1 ^ s2)

# 某些方法
print(s1-s2)
s1.difference_update(s2) # 等于s1 - s2后再赋给s1
print(s1)

# 判断有无交集
print(s1.isdisjoint(s2))

s3 = {1,2,3,4,5}
s4 = {1,2,3,5}
s5 = {11,22,33}

print(s4.issubset(s3)) # 判断是否子集
print(s3.issuperset(s4)) # 判断s3 是否父集
s3.add(6) # 每次只能添加一个值
print(s3)
s3.update(s5) # 单次可以更新多个值
s3.update([aa,bb]) # 传列表
s3.update((cc,dd)) # 传元组
print(s3)

# 如果不考虑顺序,可以用set给列表去重
ls = [abc,fff,abc,dde]
ls = list(set(ls))
print(ls)

######### 特殊: 不可改变的 set
s = frozenset(hello) # 将不能添加、删除、修改
print(s)

 

以上是关于python基础08_set的主要内容,如果未能解决你的问题,请参考以下文章

Python基础——魔法方法

python基础08--迭代器,生成器

python基础代码

Python matplotlib 基础练习:画出正弦曲线等

Python collections -- 2019-08-09 10:23:13

Python collections -- 2019-08-11 19:40:35