集合-Python进阶篇十四

一、集合的特点:

  1、没有重复、无序的。而list是允许重复和有序(index)的。

  2、符号:{},{元素,元素,元素....} 集合

        {},{key:value,....}   字典

set1 = {'shangsan'}
print(type(set1))  # <class 'set'>

因为集合是没有重复的,带重复元素的列表可以通过转换成集合来去除重复:

list1 = {5, 6, 2, 7, 4, 2, 2, 9, 7}
set1 = set(list1)  # 转换成集合
print(set1)  # {2, 4, 5, 6, 7, 9}

  二、声明空集合和添加内容

  添加    合并

  add    update  set(集合)

  append   extend  list(列表)

#  为了和字典进行区别,设定空集合用set()
set1 = set()
set2 = set()
#  向集合中添加内容
set1.add('三体')
set1.add('盗墓笔记')
print(set1)  # {'三体', '盗墓笔记'}
set2.add('西游记')
set2.add('红楼梦')
print(set2)  # {'红楼梦', '西游记'}

#  合并集合
set1.update(set2)
print(set1)  # {'西游记', '盗墓笔记', '三体', '红楼梦'}

实例:

'''
1、生成4各数字的随机数
2、要有数字和字母
3、5组随机数各部相同
'''
import random

code_set = set()
s = '123456789asdfghjklqwertyuiopzxcvbnm'
while True:
    code = ''
    for i in range(4):
        # 通过下标方式获取随机数
        # index = random.randint(0, len(s) - 1)
        # code += s[index]
        # 不通过下标获取随机数
        r = random.choice(s)
        code += r
    code_set.add(code)  # 集合可以不用重复
    if len(code_set) == 5:  # 有5组数据后跳出循环
        break
print(code_set)  # {'55ri', 'u8bk', '5taa', '9qiu', 'm9ju'}

 三、删除集合元素。

s = {1, 2, 3, 4, 5}
s.remove(1)  # 对元素进行指定删除
print(s)  # {2, 3, 4, 5}
#  remove和discard都可以对指定的元素进行删除,但是当指定元素不存在的时候remove会报错,
#  但是discard不会报错什么都不会做
s.discard(2)
print(s)  # {3, 4, 5}

s.clear()  # 清空列表
print(s)  # set()

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

 四、交集、并集、差集。

  1、交集:两个集合相同的部分。intersection(),用符合标识是 &

  2、并集:两个集合并在一起。union(),用符合标识是 |

  3、差集:与另一个集合不一样的部分。difference(),用符合标识是 -

s1 = {1, 2, 3, 4, 5}
s2 = {4, 5, 6, 7, 8, 9}
result = s1.intersection(s2)  # 交集
print(result)  # {4, 5}

result = s1.union(s2)  # 并集
print(result)  # {1, 2, 3, 4, 5, 6, 7, 8, 9}

result = s1.difference(s2)  # 差集,s1对s2的
print(result)  # {1, 2, 3}
result = s2.difference(s1)  # 差集,s2对s1的
print(result)  # {8, 9, 6, 7}

  通过符号:

s1 = {1, 2, 3, 4, 5}
s2 = {4, 5, 6, 7, 8, 9}
result = s1 & s2
print(result)  # {4, 5}

result = s1 | s2  # 并集
print(result)  # {1, 2, 3, 4, 5, 6, 7, 8, 9}

result = s1 - s2  # 差集,s1对s2的
print(result)  # {1, 2, 3}
result = s2 - s1  # 差集,s2对s1的
print(result)  # {8, 9, 6, 7}

 

posted @ 2021-09-29 10:39  逍遥abin  阅读(77)  评论(0编辑  收藏  举报