WELCOME

不积跬步,无以至千里;不积小流,无以成江海。

Python集合

1.集合(set)

 

(1)集合是可变的容器

(2)集合内部的数据都是唯一的,其值不能更改,可以包含元组,但不能有列表

(3)集合是无序的存储结构,集合中的数据没有先后顺序关系

(4)集合内的元素必须是不可变的对象

(5)集合是可迭代对象

(6)集合相当于只有键没有值的字典

  •  内置函数:

add():

为集合添加元素。
clear(): 移除集合中的所有元素。
copy(): 拷贝一个集合。
difference(): 返回多个集合的差集。
discard(): 删除集合中指定的元素。
intersection(): 返回集合的交集。
isdisjoint(): 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset(): 判断指定集合是否为该方法参数集合的子集。

issuperset(): 判断该方法的参数集合是否为指定集合的子集。
pop(): 随机移除元素。
remove(): 移除指定元素。
symmetric_difference(): 返回两个集合中不重复的元素集合。
union(): 返回两个集合的并集。

 

2.集合的基本操作

(1)利用集合特性取出重复元素

1 利用集合特性取出重复元素
2 list1 = [1, 2, 3, 5, 1, 2, 36, 4, 8, 7, 55]
3 set1 = set(list1)
4 print(list(set1))  # >> [1, 2, 3, 36, 5, 4, 7, 8, 55]
5 
6 # set() : 定义集合
7 set2 = set()
8 print(type(set2))  # >> <class 'set'>

 

(2)集合.add : 添加元素

1 # 集合.add : 添加元素
2 set2 = set()
3 set2.add('《三体》')
4 print(set2)  # >> {'《三体》'}

 

(3)集合.update() : 合并两个字典并取出重复值

1 # 集合.update() : 合并两个字典并取出重复值
2 set3 = set()
3 set3.add('三体')
4 set3.add('红楼梦')
5 set2.update(set3)
6 print(set2)  # >> {'红楼梦', '三体', '《三体》'}

 

 3.移除

(1)移除元素 集合.remove() ,如果集合中没有这个元素,就会报错

1 set1 = {'dBG4', 'baHC', '6loW', 'hHWl', 'f8aU'}
2 set1.remove('hHWl')
3 print(set1)  # >> {'6loW', 'dBG4', 'f8aU', 'baHC'}
4 set1.remove('1232')
5 print(set1)  # >> KeyError: '1232'

 

(2)集合.disca() 如果元素不在集合中,也不会报错,打印原集合

1 set1 = {'dBG4', 'baHC', '6loW', 'hHWl', 'f8aU'}
2 set1.discard('dBG4')
3 print(set1)  # >> {'baHC', 'hHWl', '6loW', 'f8aU'}
4 set1.discard('1234')
5 print(set1)  # >> {'6loW', 'baHC', 'hHWl', 'dBG4', 'f8aU'}

 

(3)集合.pop() : 随机删除集合里面的元素

1 set1 = {'dBG4', 'baHC', '6loW', 'hHWl', 'f8aU'}
2 set1.pop()
3 print(set1)  # >> {'hHWl', 'dBG4', 'f8aU', 'baHC'}

 

5.交并补

 1 set1 = {1, 2, 5, 4, 5, 2, 3}
 2 set2 = {1, 2, 5, 4, 2, 3, 6, 8, 5, 4}
 3 # 交集
 4 result = set1.intersection(set2)
 5 print(result)
 6 # 并集
 7 result = set1.union(set2)
 8 print(result)
 9 # 补集
10 result = set2.difference(set1)
11 print(result)
12 # {1, 2, 3, 4, 5}
13 # {1, 2, 3, 4, 5, 6, 8}
14 # {8, 6}
15 
16 # 交集
17 print(set1&set2)
18 # 并集
19 print(set1|set2)
20 # 补集
21 print(set2-set1)
22 
23 # {1, 2, 3, 4, 5}
24 # {1, 2, 3, 4, 5, 6, 8}
25 # {8, 6}

 

5.小练习

随机产生五组验证码

 1 import random
 2 
 3 code_list = set()
 4 s = 'qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM'
 5 while True:
 6     code = ''
 7     for i in range(4):
 8         r = random.choice(s)  # 表示从s中随机取一个字符
 9         code += r
10     # 将code添加到set中
11     code_list.add(code)
12     if len(code_list) == 5:
13         break
14 print(code_list) # >> {'dBG4', 'baHC', '6loW', 'hHWl', 'f8aU'}

 

posted @ 2022-03-21 14:24  Ambitious~  阅读(103)  评论(0)    收藏  举报