Python:集合(set)

一:作用

二:定义

三:类型转换

四:内置方法

 

一:作用

集合的作用就是两个或多个集合整体进行比较差异,而不是用来从集合中取单个元素,取单个元素用列表,元组或字典

1.关系运算:

friends1 = ['张三','李四','王五','李老八']
friends2 = ['赵老七','山本五十六','李老八','张三']

lll = []
for i in friends1:
    if i in friends2:
        lll.append(i)
print(lll)

以上代码执行结果为:

['张三', '李老八']

由执行结果可知,通过for循环将两个列表的相同值取出,那么有没有更简便的方法呢?答案就是用集合

 

二:集合类型的定义

在{}中用逗号分割开多个元素,且元素必须满足以下三个要求:

1.元素必须是不可变类型

2.元素必须是无序的

3.元素没有重复

lll = {(1,2,3),2,'hello'}

 

三:集合类型转换

lll = set()
mmm = [1,2,3,4,5,6,6]
for i in mmm:
    lll.add(i)
print(type(lll))
print(lll)

以上代码执行结果为:

<class 'set'>
{1, 2, 3, 4, 5, 6}

 

四:集合的内置方法

friends1 = {'张三','李四','王五','李老八'}
friends2 = {'赵老七','山本五十六','李老八','张三'}

print(friends1 & friends2,'求两个集合的交集')
print(friends1 | friends2,'求两个集合的并集')
print(friends1 - friends2,'求friends1的差集')
print(friends2 - friends1,'求friends2的差集')
print(friends1 ^ friends2,'求两个集合的对称差集')

以上代码执行结果为:

{'李老八', '张三'} 求两个集合的交集
{'李老八', '山本五十六', '赵老七', '王五', '张三', '李四'} 求两个集合的并集
{'李四', '王五'} 求friends1的差集
{'山本五十六', '赵老七'} 求friends2的差集
{'王五', '山本五十六', '李四', '赵老七'} 求两个集合的对称差集

关系运算:

lll = {1,2,3,4}
mmm = {1,2,3,4}
print(lll > mmm)
print(lll < mmm)
print(lll == mmm)

以上代码执行结果为:

False
False
True

由执行结果可知,lll和mmm互为父子关系

 

集合的其它方法:

删除:

friends1 = {'张三','李四','王五','李老八'}
friends1.discard('山本五十六')
print(friends1,'-------------分割线')
friends1.remove('山本五十六')
print(friends1)

以上代码执行结果为:

{'张三', '王五', '李四', '李老八'} -------------分割线
Traceback (most recent call last):
  File "D:\PyCharm\lizi\basis\20200303\集合.py", line 31, in <module>
    friends1.remove('山本五十六')
KeyError: '山本五十六'

由执行结果可知,删除已有元素的时候discard与remove相同,删除不同元素的时候remove会导致程序报错

修改:

friends1 = {'张三','李四','王五','李老八'}
friends1.update({1,2,3,4})
print(friends1)

以上代码执行结果为:

{1, '李老八', 2, '李四', 3, 4, '张三', '王五'}

添加:

friends1 = {'张三','李四','王五','李老八'}
friends1.update({1,2,3,4})
friends1.add(999)
print(friends1)

以上代码执行结果为:

{'张三', 1, '李四', 2, 3, 4, 999, '王五', '李老八'}

需要注意的是,update可以添加多个元素,而add每次只能添加一个,多了报错

 

posted @ 2021-03-03 19:54  Sqlserverwooooo  阅读(103)  评论(0编辑  收藏  举报