领取淘宝天猫优惠券:优惠淘 | 欢迎使用随心而码微信小程序,微信搜一搜【随心而码】可直接搜到。

Python 入门笔记——数据类型之Set

Python Hicoder 336℃ 0评论

Set集合数据类型,本身就是一个集合。它是无序不重复元素的集合。

什么是Set?

与数学中的集合类似,Python中的集合数据类型指的是一系列值(元素)组成的一个集体。我们所有人类是一个集合。中国人是一个集合。

数学中集合的特性:
  • 确定性:一个对象能够确定是不是属于一个集合,如很小的数无法构成一个集合,因为具有不确定性。
  • 互异性:即集合中任意两个对象都是不同的。也就是集合中不存在重复的对象。
  • 无序性:{a, b, c}与{b, c, a}是同一个集合。
  • 纯粹性:一个集合中的所有对象必须具备一个共同的属于该集合的特征。
  • 完备性:一个集合必须包含所有符合集合共同特征的对象。
Python中的集合

使用大括号 {} 或者 set() 函数来创建一个集合。注意:创建一个空集合必须使用 set(),因为 {} 用来创建一个空字典。初始化一个集合必须用List、Tuple、String。

特性

  • 互异性:不存在重复元素。
  • 无序性。

因其无序性,集合不支持下标索引以及切片来进行取值、修改值、删除值操作

定义一个集合


example = set([1, 2, 3]) # 用列表初始化集合
print(example)
# {1, 2, 3}

注意,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。

自动过滤重复元素


set1 = set(['apple', 'banana', 'apple', 'pear', 'orange', 'banana'])
print(set1)
# 将自动过滤重复元素
# {'apple', 'pear', 'orange', 'banana'}

Set的基本操作

基本运算

与数学中的集合操作类似,可做并集、交集等运算。

  • in和not in:成员运算符。判断元素与集合的包含与不包含关系。
  • ==和!=:判断等于与不等于。
  • <:判断绝对子集关系。
  • <=:判断非绝对子集关系。
  • >:判断绝对超集关系。
  • >=:判断非绝对超集关系。
  • &:求交集。
  • |:求并集。
  • ^:求两个集合共同元素之外的所有元素组成集合。

解释:集合a,集合b。b是a的子集,即b包含于a;如果b不等于(!=)a,则b是a的绝对子集,反过来a是b的绝对超集。


list = [1314, 520, 'my love', 'Hi', 'Python']
fir_set = set(list)
sec_set = set([520, 'Hi', 3.1415, 88])

# in and not in
print(520 in fir_set)
# IDLE中输出True

# == 判断两个集合的包含关系
print(fir_set == sec_set)
# False

# < 判断两个集合的包含关系
print({1314, 'Hi'} < fir_set)
# True

# >= 判断两个集合的包含关系
print(fir_set >= sec_set)
# False

# & 求两个集合都包含的元素
print(fir_set & sec_set)
# {520, 'Hi'}

# | 求两个集合所包含的所有元素,自动去除重复元素
print(fir_set | sec_set)
# {1314, 'Hi', 520, 3.1415, 'Python', 88, 'my love'}

# ^ 求两个集合共同元素之外的所有元素
print(fir_set ^ sec_set)
# {1314, 3.1415, 88, 'my love', 'Python'}

内置函数

  • add():增加新的元素,新增元素的位置随机。
  • update(seq):用序列(String、List、Tuple)更新集合,序列中的每个元素都被添加到集合中。
  • remove(element):删除集合中的元素。
  • len(set):求集合中元素个数。
  • clear():清空集合中的元素,集合变为空集合。

s = {133, '522', '你好', 568}
print(type(s)) # <class 'set'> 表示是集合类型

s.add(1000)
print(s)
# {'522', '你好', 133, 1000, 568}

s.update((12, 'Hi'))
print(s)
# {133, '你好', 1000, 'Hi', '522', 12, 568}

s.remove(568)
print(s)
# {133, 'Hi', '522', 1000, 12, '你好'}

print(len(s))
# 6

s.clear()
print(s)
# set()

不去实践,永远做不成一件事。

转载请注明:随心而码 » Python 入门笔记——数据类型之Set

喜欢 (0)