Python集合
目录
添加
add
update
删除
remove
discard
pop
交集 &
并集 |
公共操作
运算符
方法
enumerate
元素被大括号包围,每个元素间用逗号隔开,就是集合。
它和字典的区别在于,字典是键值对,而集合只是单个元素,如下就是一个集合。
s1 = {10, 20, 30}
print(type(s1)) # <class 'set'>
print(s1) # {10, 20, 30}
集合的特点在于,里面的元素不能是重复的,并且不支持下标访问。
添加
add
语法:setname.add(obj),将obj加入到集合中,如果obj在集合中已经存在,会去重。
s1 = {10, 20}
s1.add('3')
print(s1) # {100,10,20}
s1.add(10) #如果添加的元素已经在集合中存在,会自动去重
print(s1) # {100,10,20}
update
语法:setname.add(obj),将obj加入到集合中,obj必须是一个可迭代的对象。
添加列表
s1 = {10, 20}
# s1.update(100) #100不是可迭代对象,会报错
# 添加列表
s1.update([100, 90]) # [100] 类型为列表,是一个可迭代对象
print(s1) # {100, 10, 20, 90}
添加元组
将(20,11)添加到s1中。
s1 = {10, 20}
s1.update((22,11))
print(s1) # {10, 11, 20, 22}
添加集合
将集合{22,11}添加到集合s1中。
s1 = {10, 20}
s1.update({22,11})
print(s1) # {10, 11, 20, 22}
添加字典
s1 = {10, 20}
s1.update({22:11}) # 只会添加key,字典的键值对是一个整体,代表一个元素
print(s1) # {10, 20, 22}
把集合x和集合y合并,并去重
x = {"apple", "banana","music"}
y = {"apple", "runoob","google"}
x.update(y)
print(x) # {'runoob', 'google', 'apple', 'music', 'banana'}
删除
remove
语法:setname.remove(obj),将obj删除,如果obj不存在会报错。
s1 = {10, 20}
s1.remove(10) #删除10
print(s1) # {20}
s1.remove(10) #集合中没有该数会报错
discard
语法:setname.discard(obj),将obj删除,如果不存在不会报错。
s1 = {10, 20}
s1.discard(10)
print(s1) # {20}
s1.discard(10)
print(s1) # {20}
pop
语法:setname.pop(),随机删除集合中的某个数据,并返回这个数据。
s1 = {10,20,30,40,50,60}
del_num = s1.pop()
print(del_num) # 50
交集 &
# 交集 &
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
se = a&b
print(se) # {3, 4}
并集 |
# 并集 |
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
se = a | b
print(se) # {1, 2, 3, 4, 5, 6}
公共操作
运算符
运算符 | 描述 | 支持的容器类型 |
+ | 合并 | 字符串、列表、元组 |
* | 复制 | 字符串、列表、元组 |
in | 元素是否存在 | 字符串、列表、元组、字典、集合 |
not in | 元素是否不存在 | 字符串、列表、元组、字典、集合 |
+
加号可以对两个字符串、列表、元组之间进行一个拼接。
# 1. +
# 字符串
s1 = 'hello '
s2 = 'music'
s3 = s1 + s2
print(s3) # hello music
# 列表
l1 = [1, 2, 3]
l2 = [4, 5, 6]
l3 = l1 + l2
print(l3) # [1, 2, 3, 4, 5, 6]
# 元组
t1 = (1, 2, 3)
t2 = (4, 5, 6)
t3 = t1 + t2
print(t3) # (1, 2, 3, 4, 5, 6)
*
对字符串、列表、元组进行*操作,本质就是复制拼接,比如s2 = s1 * 5, 就是s1后面拼接上4个s1,然后赋值给s2,这个操作并不会影响s1。
# 2. *
# 字符串
s1 = 'music '
s2 = s1 * 5
print(s2) # music music music music music
# 列表
l1 = [1, 2, 3]
l2 = l1 * 3
print(l2) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
# 元组
t1 = (1, 2, 3)
t2 = t1 * 3
print(t2) # (1, 2, 3, 1, 2, 3, 1, 2, 3)
in
in就是在的意思,可以判断一个元素在不在对象中,如果在返回True,不在返回False。
# 3. in
# 字符串
s1 = 'music good'
print('a' in s1) # False
# 列表
l1 = [1, 2, 3, 'music']
print('music' in l1) # True
# 元组
t1 = [1, 2, 3, 'python']
print('music' in t1) # False
# 字典
dict1 = {'music':'月光奏鸣曲', 'teacher':'good'}
print('月光奏鸣曲' in dict1) # False
print('music' in dict1) # True
# 集合
set1 = {'music', 'teacher'}
print('music' in set1) # True
not in和in的用法是一样的,这里就不演示了。
方法
方法 | 描述 |
len() | 计算元素个数 |
del() | 删除整个对象或某个元素 |
max() | 求一组数中的最大值 |
min() | 求一组数中的最小值 |
enumerate() | 将(下标,数据)一 一列出 |
len
这里只演示一个字典,其它类型都是一样的。
dict1 = {'music':"good", 'teacher':'good'}
print(len(dict1)) # 2
del
del后面如果是某个元素,就删除某个元素,否则就删除所有数据。如果要删除的数据不存在,会报错。
dict1 = {'music':"good", 'teacher':'good'}
del dict1['music'] # 将 'music':'good'删除
print(dict1) # {'teacher': 'good'}
max
这个地方要注意,如果要使用max,那么必须数据类型都是一致的,不能出现整形又出现字符串,这是没法比较的。字符串和整形的比较规则不一样。
l1 = [1,2,3,4,5,6,7,8,9,10]
print(max(l1))
min
min是求一组数中的最小值的,和max一样,数据类型要一致。
l1 = [1,2,3,4,5,6,7,8,9,10]
print(min(l1))
enumerate
enumerate是配合for循环使用的,打印的时候可以把下标和对应的元素打印出来。
l1 = [1,2,3,4,5,6,7,8,9,10]
for i in enumerate(l1):print(i)