一、基础概念
1、集合:
集合是一个无序的、不重复的数据租户,它的作用:
1、去重复、把一个列表变成集合,就会自动去重
2、关系测试,测试两组数据之间的交集、差集、并集等关系
集合的方法:
a、设置集合
>>> list_1 = [1,3,5,6,77,3,12] #列表1 >>> list_2 = [1,3,88,4,33,77] #列表2 >>> list_1 = set(list_1) #通过set方法可以将列表变为集合 >>> list_1 {1, 3, 5, 6, 12, 77} #集合list_1现在已经去重 >>> list_2 = set(list_2) >>> list_2 {1, 33, 3, 4, 77, 88} >>>print(list_1,type(list_1)) #打印list_1类型,发现为set类型,证明为集合 {1, 3, 5, 6, 12, 77} <class ‘set‘>
b、取交集 intersection(list_1 list_2共有的元素)
>>> list_1.intersection(list_2) {1, 3, 77} >>> print(list_1 & list_2) {1, 3, 77} #上述两种方法均可以取出list_1与list_2的交集
c、取并集union(list_1 与list_2中全部去重元素)
>>> list_1.union(list_2) {1, 33, 3, 4, 5, 6, 12, 77, 88} >>> list_1 | list_2 {1, 33, 3, 4, 5, 6, 12, 77, 88} #上述两种方法取两个集合的全部去重元素
d、取差集(差集是一个集合有,但是另一个集合没有的元素,所以差集可以得到两种不同的结果)
>>> list_1.difference(list_2) #list_1中存在但是list_2中不存在 {12, 5, 6} >>> list_2.difference(list_1) ##list_2中存在但是list_1中不存在 {88, 33, 4}
>>> list_1 - list_2
{12, 5, 6}
>>> list_2 - list_1
{88, 33, 4}
e、判断子集(判断一个集合是否在另一个集合中)
>>> list_3 = set([1,3]) >>> list_3.issubset(list_2) True >>> list_3.issubset(list_1) True
f、判断父集
>>> list_1.issuperset(list_3) True
g、对称差集symmetri_difference(去掉list_1与list_2的交集后存入其他剩余元素)
>>> list_1.symmetric_difference(list_2) {33, 4, 5, 6, 88, 12} >>> list_1 ^ list_2 {33, 4, 5, 6, 88, 12}
基本操作:
a、添加(集合操作没有插入动作,只能添加)
>>> list_1 {1, 3, 5, 6, 12, 77} >>> list_1.add(999) #添加单项 >>> list_1.add(‘wang‘) >>> list_1 {1, 3, 5, 6, 999, 12, 77, ‘wang‘} >>> list_1.update([‘alex‘,‘john‘,‘tom‘]) #添加多项 >>> list_1 {1, 3, 5, 6, 999, 12, 77, ‘john‘, ‘tom‘, ‘wang‘, ‘alex‘}
b、删除
>>> list_1 {1, 3, 5, 6, 999, 12, 77, ‘john‘, ‘tom‘, ‘wang‘, ‘alex‘} >>> list_1.remove(999) #通过remove方法删除,删除后不显示删除项,删除需要明确指定删除项的内容,因为集合是无序的,没有索引的概念 >>> list_1 {1, 3, 5, 6, 12, 77, ‘john‘, ‘tom‘, ‘wang‘, ‘alex‘} >>> list_1.remove(wang) #针对字符串需要加引号 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name ‘wang‘ is not defined >>> list_1.remove(‘wang‘) >>> list_1 {1, 3, 5, 6, 12, 77, ‘john‘, ‘tom‘, ‘alex‘} >>> list_1.pop() #pop方法属于随机删除,删除后显示删除的内容 1 >>> list_1.pop() 3 >>> list_1.pop() 5 >>> list_1.pop() 6 >>> list_1.pop() 12 >>> list_1.pop() 77 >>> list_1.pop() ‘john‘ >>> list_1 {‘tom‘, ‘alex‘}
c、discard删除
>>> list_1 {‘wang‘, 1, 3, 5, 6, 999, 12, 77, ‘john‘, ‘tom‘, ‘alex‘} >>> list_1.discard(999) >>> list_1 {‘wang‘, 1, 3, 5, 6, 12, 77, ‘john‘, ‘tom‘, ‘alex‘} >>> list_1.discard(888) #discard与remove的不同之处在于,discard如果是删除不存在的内容,不会报错,但是remove会报错 >>> list_1.remove(999) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 999
d、长度len
>>> len(list_1) 10 >>> list_1 {‘wang‘, 1, 3, 5, 6, 12, 77, ‘john‘, ‘tom‘, ‘alex‘}
e、成员判断(in 和not in)
>>> list_1 {‘wang‘, 1, 3, 5, 6, 12, 77, ‘john‘, ‘tom‘, ‘alex‘} >>> ‘wang‘ in list_1 True >>> 11 in list_1 False >>> 11 not in list_1 True
f、拷贝(和list一样,都属于浅拷贝)
时间: 2024-10-02 04:17:44