Python小白到老司机,快跟我上车!基础篇

Posted coder-pig

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python小白到老司机,快跟我上车!基础篇相关的知识,希望对你有一定的参考价值。

1、集合(Set)

列表元组通过索引查找元素,字典通过键来查找元素,而接下来的集合无法去索引某个具体的元素,集合里的元素「无序」,且「自动去重」,使用「大括号」包裹元素,使用逗号进行分隔。另外有一点要注意:创建 空集合 必须使用 set()函数 来构建,而不能直接用,直接一个的话,会直接创建一个空字典,而不是一个空集合

① 集合的基本操作

代码示例如下

# 1.集合创建
set_1 = set() # 创建一个空集合
set_2 = 1, 2, 3, 4, 5, 1, 2 # 普通方式创建集合,重复元素会被自动删除
set_3 = set('12345') # 通过字符串构建,注意元素无序
set_4 = frozenset(1,2,3,4) # 创建一个不可变集合

print("1.集合创建:")
print(set_1)
print(set_2)
print(set_3)
print(set_4)

# 2.判断元素是否在集合中
print("\\n2.元素是否在集合中:")
print('集合中有6这个元素:%s' % (6 in set_1)) # 判断集合中是否有此元素
print('集合中没有7这个元素:%s' % (7 not in set_1)) # 判断集合中是否有此元素

# 3.集合增删元素
print("\\n3.增删集合中的元素:")
set_1.add(6)
print("往集合中插入一个元素6后:%s" % set_1)

set_1.remove(6) # 如果删除的元素不存在会报错,建议先判断下是否存在运算再删除
print("往集合中删除一个元素6后:%s" % set_1)

set_1.discard(6) # 删除集合中的一个元素,如果元素不存在,不执行任何操作
print("删除集合中的一个元素6后:%s" % set_1)

set_2.pop() # 无序随机删除并返回任意一个集合元素,集合为空会引发KeyError
print("随机弹出集合中的一个元素后:%s" % set_2)

# 4.集合遍历
print("\\n4.遍历集合中的元素:\\n set_2 =", end='')
for data in set_2:
    print(data, end='\\t')

# 5.清空集合
set_2.clear()
print("\\n\\n5.清空集合中的元素 :%s" % set_2)

运行结果如下

1.集合创建:
set()
1, 2, 3, 4, 5
'5', '3', '1', '4', '2'
frozenset(1, 2, 3, 4)
2.元素是否在集合中:
集合中有6这个元素:False
集合中没有7这个元素:True
3.增删集合中的元素:
往集合中插入一个元素6后:6
往集合中删除一个元素6后:set()
删除集合中的一个元素6后:set()
随机弹出集合中的一个元素后:2, 3, 4, 5
4.遍历集合中的元素:
set_2 =2    3   4   5 
5.清空集合中的元素 :set()

② 集合运算相关的操作

代码示例如下

set_1 = 'a', 'b', 'c', 'd', 'e', 'f'
set_2 = set('cdefgh')
set_3 = set('ab')


# 进行数学集合运算
# 子集,集合为某个集合的一部分,使用操作符<,或issubset()进行判断
print('集合set_2是集合set_1的子集:%s' % (set_2 < set_1))
print('集合set_3是集合set_1的子集:%s' % (set_3.issubset(set_1)))

# 并集,两个集合所有元素构成的集合,使用操作符 | 或 union() 函数完成
print("集合set_1和集合set_2的并集:%s" % (set_1 | set_2))
print("集合set_1和集合set_2的并集:%s" % (set_1.union(set_2)))

# 交集,同时存在于两个集合中的元素构成的集合,使用操作符 & 或 intersection() 函数完成
print("集合set_1和集合set_2的交集:%s" % (set_1 & set_2))
print("集合set_1和集合set_2的交集:%s" % (set_1.intersection(set_2)))

# 差集,集合里有另一个集合里没有的元素构成的集合,使用操作符 - 或 difference() 函数完成
print("集合set_1和集合set_2的差集:%s" % (set_1 - set_2))
print("集合set_1和集合set_2的差集:%s" % (set_1.difference(set_2)))

# 对称差,只属于其中一个集合而不属于另一个集合的元素组成的集合
# 或者理解成全集除去交集部分元素后剩下的元素组成的集合
# 使用操作符 ^ 或 symmetric_difference() 函数完成
print("集合set_1和集合set_2的对称差:%s" % (set_1 ^ set_2))
print("集合set_1和集合set_2的对称差:%s" % (set_1.symmetric_difference(set_2)))

运行结果如下

集合set_2是集合set_1的子集:False
集合set_3是集合set_1的子集:True
集合set_1和集合set_2的并集:'h', 'b', 'd', 'c', 'f', 'g', 'e', 'a'
集合set_1和集合set_2的并集:'h', 'b', 'd', 'c', 'f', 'g', 'e', 'a'
集合set_1和集合set_2的交集:'c', 'e', 'd', 'f'
集合set_1和集合set_2的交集:'c', 'e', 'd', 'f'
集合set_1和集合set_2的差集:'b', 'a'
集合set_1和集合set_2的差集:'b', 'a'
集合set_1和集合set_2的对称差:'h', 'b', 'g', 'a'
集合set_1和集合set_2的对称差:'h', 'b', 'g', 'a'

以上是关于Python小白到老司机,快跟我上车!基础篇的主要内容,如果未能解决你的问题,请参考以下文章

Python小白到老司机,快跟我上车!基础篇(十三)

Python小白到老司机,快跟我上车!基础篇

Python小白到老司机,快跟我上车!基础篇(十九)

Python小白到老司机,快跟我上车!基础篇(十九)

Python小白到老司机,快跟我上车!基础篇(二十)

Python小白到老司机,快跟我上车!基础篇(二十)