Python序列数据类型

文章目录

python 列表 (list)

一、列表的定义

  • 列表是一组有序的一系列数据,列表中的所有元素由一对中括号括起来,元素之间用逗号分隔,可随时添加和删除其中的元素。
  • 元素的数据类型可以相同也可以不相同,也可以嵌套另一个序列。

  语法:

 list=[元素1,元素2,.....,元素n] 

  注意:
      (1)二维数组可以在取值的时候可以这样子写 list[n][m]
     (2)list 里面的元素的数据类型也可以不同,也存在list元素中有另一个list列表
     (3) list通过 len(list) 函数来算出,一般结果是元素个数

二、列表的“增删改查”

    1、添加元素

    (1)append()方法

    语法:list.append(obj)
    功能描述:在列表中的末尾添加新的对象,
    返回情况:该方法无返回值,但会修改原列表
    注意:传参是列表数据时,修改传参列表会修改原列表的数据。

a=[1,2,3,4]
b=[]
b.append(a)
a.append('aa')
print(a) #[1, 2, 3, 4, 'aa']
print(b)  # [[1, 2, 3, 4, 'aa']]
####################################
def d(num):
    num.extend(['c','f'])
    print(num) #['c', 'f']
s=[]
s.append([])
d(s[0])
print(s) #[['c', 'f']]
    (2)insert()方法

    语法:list.insert(index,obj)
    功能描述:将指定的对象插入到列表的指定位置,
    返回情况该方法无返回值,但会修改原列表
注意:列表为空时,位置参数无效。

tmp=[1,2,3,4,5,6]
tmp.insert(-3,'a')
print(tmp)  #[1, 2, 3, 'a', 4, 5, 6]
    (3)extend()方法

    语法:list.extend(seq)
    功能描述:在列表末尾逐一添加seq序列中的元素,
    返回情况:该方法无返回值,但会修改原列表

    (4)列表拼接

    语法:list1+list2
    功能描述:采用两个列表相加组成一个新的列表
    返回情况:返回一个新的列表,不改变原列表

    (5)zip()方法

语法:tuple_name=zip(v1,v2,...,vN) v1是可迭代对象
功能描述:将传参中两个序列一一对应封装成元组,如果传参长度不一致则会按照短的来打包
返回情况:返回一个由元组组成的列表对象,需通过转换成list才能展示数据值,转换成其他序列类型都会返回空值

实例代码:

a=[1,2,3,4,'d']
b=[3,45,'ee']
c=zip(a,b)
print(list(c))
print(dict(c),tuple(c),set(c))

在这里插入图片描述

附加知识:append()和extend()区别
函数名称区别
append()将参数整体插入到列表后面
extend()将参数整体拆分逐个插入到列表后面

实例代码:
向list01中插入缺失的字符 list01=[‘A’,‘B’,‘C’,‘D’,‘F’,‘G’,‘H’,‘J’,‘K’,‘L’,‘M’,‘N’,‘R’,‘S’,‘U’,‘V’,‘W’]

list01=['A','B','C','D','F','G','H','J','K','L','M','N','R','S','U','V','W']
list01.insert(4,"E")  
list01.insert(8,"I")  
list01.insert(list01.index("S")+1,"T")
list01.append("X")
list01.extend(('Y','Z'))
list01=list01[:list01.index("N")+1]+['O','P','Q']+list01[list01.index("N")+1:list01.index("Z")+1]
print(list01)

在这里插入图片描述

    2、删除元素

    (1)del方法

语法:del list[start:end:len]
功能描述:删除指定索引值元素或者删除指定序列
返回情况:没有返回值,没有填写索引会将整个列表删除

    (2)pop()方法

语法:list.pop([index=-1])
功能描述:删除列表中指定位置的元素,如果没有写明索引位置则,删除list末尾的元素。
返回情况:该方法返回被删除的元素并修改原列表

    (3)remove()方法

语法:list.remove(obj)
功能描述:删除列表钟指定值的元素,若列表中存在相同的值则会删除第一个值,
返回情况:该方法没有返回值
注意: remove() 方法在移除一个不存在的元素时会发生错误

    (4)整个列表删除

语法:list.clear()
功能描述:删除列表中所有的元素,类似于del list[:]
返回情况:无参数同时无返回值

实例代码:
将list02中的数字删除,list02=[‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’,22, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’,2,3,4,50, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’,12]

list02=['A', 'B', 'C', 'D', 'E', 'F',22, 'G', 'H', 'I', 'J', 'K', 'L',2,3,4,50, 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',12]
del list02[list02.index(2):list02.index(50)+1]
list02.pop()
list02.remove(22)
print(list02)

在这里插入图片描述

    3、修改元素

    (1) 直接元素赋值

语法:list_name[ index [start:end:step] ] =value / seq
功能描述:通过索引找到要修改的位置并赋值
返回情况:没有返回值,但是会修改原列表

实例代码:
修改list03中的错误字符串,list03=[‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘Fgh’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘Rr’, ‘Ss’, ‘Tt’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’]

list03=['A', 'B', 'C', 'D', 'E', 'Fgh', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'Rr', 'Ss', 'Tt', 'U', 'V', 'W', 'X', 'Y', 'Z']
list03[list03.index("Fgh")]='F'
list03[list03.index("Rr"):list03.index("Tt")+1]=["R","S","T"]
print(list03)

在这里插入图片描述

    4、查找元素

    (1)index()方法

语法:list.index(obj[,star,end])
功能描述:从列表中的star位置开始找出要查找对象的索引值,
返回情况:该方法返回查找对象的索引位置,没有查找到则返回异常

    (2)count()方法

语法:list.count(obj)
功能描述:统计列表中查找对象出现的次数
返回情况:返回元素在列表中出现的次数。

    (3)成员运算符

语法:obj in list
功能描述:检查obj是否在list中
返回情况:若存在查找的字符则返回true,否则返回false

    (4)enumerate() 方法

语法:enumerate(obj)
功能描述:获取索引和元素
返回情况:返回可迭代对象,遍历可以输出索引和元素

实例代码:

list04=["张智霖","杨千嬅","郑秀文","周星驰","周润发","张国荣","王祖贤","杨千嬅","周润发"]
print(list04.index("周润发"))
print(list04.count("杨千嬅"))
print("林青霞" in list04)
print("张国荣" in list04)
for i,v in enumerate(list04):
   print(i,v)

在这里插入图片描述

三、列表的排序与转置

    1、元素排序

语法: list_name.sort(cmp=None, key=None, reverse=False) key为比较元素,reverse为排序规则(false升序,true降序)
功能描述: 对原列表进行排序
返回情况: 没有返回值,但是会修改原列表中元素的排序

a=[1,33,6,3,26]
b=id(a)
a.sort()
print(a)  # [1, 3, 6, 26, 33]
print(b==id(a) # True

补充知识: sort() 和 sorted() 的区别

  1. sort() 是 list列表的成员方法;sorted() 可以对所有可迭代的对象进行排序操作。
  2. sorted()排序后生成新的一个序列,不修改原列表; sort() 可直接修改原列表
  3. 两者使用方法不同,sorted(可迭代的对象); list对象.sort()

    2、元素转置

语法:list_name.reverse()
功能描述:反向列表中元素
返回情况:没有返回值,但是会对列表的元素进行转置

l=[1,27,53,4,6,7,8,6,8]
l.sort()
print(l)
l.reverse()
print(l)

在这里插入图片描述

Python 元组 (taupe)

一、元组的定义

  • 跟列表类似,元组是由一系列按特定顺序排序的元素组成,元素由括号括起来,元素之间逗号分隔。
  • 元组中的元素不能修改

  语法:

taupe_objext=(元素1,元素2,.....,元素n)

二、元组的操作

    1、元组创建

    (1)直接赋值创建

语法:tuple_name=(v1,v2,...,vN)
功能描述:通过赋值组成元组
返回情况:返回一个元组类型的对象
注意:tuple_name=() 创建一个空元组

    (2)tuple()函数创建

语法:tuple_name=tuple(v1,v2,...,vN)
功能描述:将序列转换成元组类型,所以参数中的元素必须是已定义的
返回情况:返回一个元组类型的数据

    2、访问元组

语法:tuple_name[index[start : end : step]]
功能描述:通过索引访问元组元素
返回情况:返回索引指定的元素

    3、修改元组 (无法修改元素)

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
语法:tuple_name1 + tuple_name2
功能描述:将两个元组拼接
返回情况:返回一个新的元组

    4、删除元组(无法删除元素)

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
语法:del tuple_name
功能描述:将整个元组删除
返回情况:返回元组尚未定义的异常

实例代码:

tuple01=("语文","数学","英语","物理","地理","生物","历史")
print(tuple01[3:])
tuple01=tuple01+('化学','政治')
print(tuple01)

在这里插入图片描述

三、元组的内置函数

    1、len()方法

语法:len(tuple_name)
功能描述:计算元组元素的个数
返回情况:返回元组元素的个数

    2、max()方法

语法:max(tuple_name)
功能描述:返回元组中元素最大值
返回情况:返回元组中元素最大值

    3、min()方法

语法:min(tuple_name)
功能描述:返回元组中元素最小值
返回情况:返回元组中元素最小值

    4、tuple()方法

语法:tuple(tuple_name)
功能描述:将可迭代系列转换为元组
返回情况:返回一个新的元组

实例代码:

tuple02=('语文', '数学', '英语', '物理', '地理', '生物', '历史', '化学', '政治')
list0=[1,23,4,5,6,7,8,9]
print(len(tuple02))
print(max(tuple02))
print(min(tuple02))
print(tuple(list0))

在这里插入图片描述

Python 字典 (dict)

一、 字典的定义

  • 字典是采用一对"{ }"括起来,以“key:value”的键值对形式存储数据。
  • 字典的存储位置没有顺序,所以操作字典时不能采用索引值来操作,需要通过key来访问操作。
  • key是具有唯一性且要求可哈希,其数据类型一般为不可变类型(数字( int \ float \ bool ),字符串,元组),而value的数据类型没有要求。
  • 注意:不可哈希的对象:列表、集合和字典。
  • 类似java的HashMap,优点是 查询插入删除 的效率更快,但是无法通过index访问

  语法:

{key1:value1,key2:value2,...,keyN:valueN}

二、字典创建方法

    1、直接创建:

语法:dict={key1:v1,key2:v2}
功能描述:创建一个字典类型的序列
返回情况:返回一个字典类型的序列
注意:dict={} 创建空字典

    2、dict()函数创建:

语法:dict{key1:v1,key2:v2}
功能说明:将序列转换成字典
返回情况:返回一个字典类型的序列
注意: dict() 创建一个空字典

    3、fromkeys()方法

语法:dict.fromkeys(seq[,value])
功能描述:将seq提到的键对应的所有设置初始值,value默认None
返回类型:返回一个被设置初始值的新字典
注意:该方法可以初始化key

    4、字典推导式

语法:{key表达式:值表达式 for循环 [if条件]}
功能描述:根据for循环和if条件生成对应的字典数据
返回情况:返回一个新字典
注意:字典推导式的效率均比普通的for循环效率更高

    5、copy()

语法:dict_name.copy()
功能描述:复制字典
返回情况:返回一个字典(浅拷贝)

    6、deepcopy()

语法: dict_name.deepcopy()
功能描述: 复制字典
返回情况: 返回一个字典(深拷贝)

    浅拷贝与深拷贝区别:

如果改变原始元素时会修改浅拷贝的的元素,此情况只针对可变的数据类型,如果修改不可变类型则浅拷贝对象则不被修改;深拷贝对象不受影响。

实例代码:

d=dict()
d=d.fromkeys(["姓名","张智霖","杨千嬅","郑秀文"],[])
a=["姓名","张智霖","杨千嬅","郑秀文"]
b=[[],[],[],[]]
c={x:y for x,y in zip(a,b) } #相当于{c={x,y for x,y in d.items()}
print(c)
z="goods_id=17356;goods_name=新疆天山雪梨;price=15.5;specs=1kg"
print({z.split("=")[0]:z.split("=")[1] for z in z.split(";")})
#统计每个字符出现的次数
print({z[i]:z.count(z[i]) for i in range(len(z))})

在这里插入图片描述

三、字典的“增删改查”

    1、添加元素

    (1) 直接赋值

语法: dict_name[key]=value
功能描述: 指定对应的key并赋值,若key在字典中已存在,那么会修改key的值,若key在字典中不存在,则新增键值对
返回情况: 没有返回值,但是会修改字典中的值或新增键值对

    (2) update()方法

语法: dict_name.update(key1=value1,...,keyN=valueN / seq)
功能描述: 若key已存在则修改值,若key不存在则新增键值对
返回情况: 没有返回值,但是会修改字典中的值或新增键值对
注意: 该方法也可以拼接两个序列,但会修改原序列

    (3) 拼接方法

语法: dict_name3=dict(list(dict1.items()),list(dict2.items()))
功能描述: 将1和2字典拼接
返回情况: 返回新的字典

实例代码:

d={"班级":["三(2)班"],"姓名":["张三"],"成绩":[89]}
#添加三年(5)班的李四 成绩87
d.update(姓名=['张三', '李四'],班级=['三(2)班', '三年(5)班'],成绩=[89, 87])  #相当于d['班级'].append('三年(5)班')...
#将张三改为王五
d['姓名'][0]='王五'
print(d)
a={1:2,3:12,5:1}
b={6:0,0:8}
c=dict(list(a.items())+list(b.items()))
print(c)

在这里插入图片描述

    2、删除键值对

删除键值对一种有3种方法,分别是pop()、clear()和del方法

    (1) pop()方法

语法: dict_name.pop(key[,default])
功能描述: 删除指定的key及其对应的值,如没有找到key返回default值,但default没有值则会抛出异常。
返回情况: 删除原字典的指定值并返回被删除的值

    (2) clear()方法

语法: dict_name.clear()
功能描述: 删除字典中的所有键值对
返回情况: 没有返回值

    (3) del方法

语法: del dict_name[key]
功能描述: 删除指定key对应的值,如果key不存在抛出KeyError异常,如果没有key值则删除整个字典
返回情况: 直接删除指定值无返回值

实例代码:

d={'班级': ['三(2)班', '三年(5)班'], '姓名': ['王五', '李四'], '成绩': [89, 87],'年龄':[12,13]}
d.pop('成绩')
print(d)
del d['姓名']
print(d)
d.clear()
print(d)

在这里插入图片描述

    3、修改元素

字典中的键是唯一的,不支持被修改,但是键对应的值可以允许修改,一般通过赋值或update()方法更新值,但前提需要key在字典中。

    4、查询元素

    (1) 键直接访问

第一种:通过一个key访问
语法: dict_object[key]
功能描述: 通过key获取value值
返回情况: 返回对应的value值
注意: 当key是集合时,需要通过整个集合才能找到其值。

第二种:通过多个key访问
语法: itemgetter(*keys)(dict_object) 需from operator import itemgetter
功能描述: 通过*keys序列查询字典对象的值并返回
返回情况: 当传入一个key值返回对应的value值,当传入两个或多个key时以元组数据形式返回对应value值

    (2) get()方法

语法:dict_name.get[ key [ , None ] ]
功能描述: 通过key查询其对应的value值并返回value值,如果没有找到返回逗号后面的默认值
返回情况: 返回对应的value值或默认值
在这里插入图片描述

    (3) setdefault()方法

语法: dict_name.setdefault(key,default=None)
功能描述: 类似于get()法,通过key查询其对应的value值并返回value值,如果没有找到返回逗号后面的默认值,但该键值对会插入到字典中。
返回情况: 返回对应的value值或默认值,没有找到键会插入键值对。
注意: 键不在字典中会将参数插入到字典中,若能找到键的话直接返回对应的值

    (4) items()方法

语法: dict_name.items()
功能描述: 以可迭代形式返回键值对数据
返回情况: 返回可迭代的(键, 值) 元组数组

    (5) keys()方法

语法: dict_name.keys()
功能描述: 以列表类型返回字典所有的键
返回情况: 返回字典中所有的键

    (6) values()方法

语法: dict_name.values()
功能描述: 以列表类型返回字典所有的值
返回情况: 返回字典中所有的值

实例代码:

 import operator
d={"姓名":'袁咏仪','别名':'靓靓',"性别":'女',"年龄":51, "身高":170,"体重":56,"职业":'演员','公司':'浙江星河文化经纪有限公司',"配偶":'张智霖',"祖籍":'广东省东莞市',"毕业院校":'香港理工大学'}
print(d['姓名'])
print(operator.itemgetter('别名','性别','身高','公司')(d))
print(d.get('毕业院校'))
print(d.setdefault('现居','未知'))
print(d)
print(d.keys())
print(d.values())
for k,v in d.items():
   print(k,v)

在这里插入图片描述

四、字典排序

字典存储时没有顺序但输出时可以人为控制顺序输出,可以通过python的内置函数sorted()控制。
语法: sorted(iterable, key=None, reverse=False)
功能描述: 对可迭代的对象进行排序操
返回情况: 返回元组元素组成的列表
参数说明:
iterable:可迭代对象
key:用于比较的元素
reverse:排序规则, True 降序,False升序

d2={'a1':1,'a2':24,'a3':9,'a4':7}
s1=sorted(d2.items()) #对key排序
print(dict(s1))   # {'a1': 1, 'a2': 24, 'a3': 9, 'a4': 7}
s2=sorted(d2.items(),key=lambda x: x[1]) #对value排序
print(dict(s2))   # {'a1': 1, 'a4': 7, 'a3': 9, 'a2': 24}
s3=sorted(d,key=d.get) #对value排序,但结果只返回key
print(s3) #

五、字典运算符

运算符描述运算结果
== /!=判断两个字典的内容是否【相同或不相同】true/false
is身份运算符,判断两个字典是否引用自同一个对象true/false
in / not in判断字典是否【包含或不包含】指定的keytrue/false
| (c=b|a)字典合并运算符(3.9版本)字典类型
|= (a|=b)更新运算符,复合赋值运算符字典类型

Python 集合(set)

一、集合的定义

集合是一个无序不重复元素序列,使用{ }set( )函数创建,

    1、创建集合

    (1) 直接赋值创建

语法: set_name = {value01,value02,...,valueN}
功能描述:直接赋值创建集合对象
返回情况:返回一个新的集合对象
注意:set_name={} 该类型是个字典

    (2) set()函数

语法: set({value1,value2,...,valueN})
功能描述:通过set函数将序列转换成集合类型序列
返回情况:返回一个新的集合对象
注意:set({}) 创建一个空的集合

    (3) copy()函数

语法: set_name1.copy() / set.copy(set_name1)
功能描述:拷贝集合
返回情况:返回一个新的集合对象
注意:复制后的集合不受原始集合的变化而变化

实例代码:


s1={1,2,'cc','dd','ss',23}
s2={}
s3={1}
s4=set()
s5=set.copy(s1) #相当于s1.copy()
s1.add(865)
t1=(1)
t2=(1,)
print(type(s1),type(s2),type(s3),type(s4))
print(type(t1),type(t2))
print(s1,s5)

运行结果:
在这里插入图片描述

二、集合的操作

    1、添加元素

给集合添加元素一共有两种方法,分别是add()方法和update()方法

    (1)add()方法

语法:set_name.add(value / seq)
功能描述:给集合添加元素,元素只能可哈希对象即元组、字符串、数值型
返回情况:没有返回值,但是会修改原集合
注意:已存在的元素,则不执行添加操作:

    (2)update()方法

语法:set_name.update(value/seq)
功能描述:修改当前集合,将参数中的元素添加到集合中,若传入参数是序列则将序列中每个元素逐一更新到集合中。
返回情况:没有返回值,但是会修改原集合
注意:传参只能是可迭代对象,元组、列表、集合、字符串

实例代码:

s={1}
s.add('a')
s.add((4,5,7,8,'a'))
s.add(2.7)
s.update("b")
s.update("21")
s.update([1,2,4,4,4,4,'a','bb'])
s.update((5,6,4,5,7,8))
print(s)

运行结果:
在这里插入图片描述

    2、移除元素

删除集合中的元素一共有三种方法,分别是remove()方法、discard()方法和pop()方法

    (1)remove()方法

语法:set_name.remove(value/seq)
功能描述:移除集合中的指定元素
返回情况:没有返回值,但是会修改原集合,当元素不存在时会直接抛出KeyError异常

    (2)discard()方法

语法:set_name.discard(value/seq)
功能描述:移除指定的集合元素
返回情况:没有返回值,但是会修改原集合,当元素不存在时也不会抛出异常

    (3)pop()方法

语法:set_name.pop()
功能描述:随机移除集合中的一个元素
返回情况:没有传入参数,返回被移除的元素

    (4)clear()方法

语法:set_name.clear()
功能描述:清空集合
返回情况:返回空集合set()

实例代码:

s={1,2,3,'a',('b','c'),7,9,'y','e','j',(1,23)}
s.remove('a')
s.remove(('b','c'))
s.update([4,5,6])
s.add(8)
s.discard('e')
s.remove('y')
s.discard('j')
s.discard((1,23))
print(s)
s.pop()
print(s)
s.clear()
print(s)

运行结果:
在这里插入图片描述

    3、计算集合元素个数

    (1)len()方法

语法:len(set_name)
功能描述:计算集合中元素的个数,其中元素包括序列数据类型
返回情况:返回元素的个数
注意:由于集合中的元素不存在重复现象,所以set没有内置的count()函数

    4、判断元素是否存在

    (1)判断元素是否存在

1、成员运算符
语法:"value/seq" in/not in set_name
功能描述:判断元素是否存在集合中
返回情况:true / false

2、issubset() 方法
语法:set_name1.issubset(set_name2) / set.issubset(set_name1,set_name2)
功能描述:判断set_name1元素是否存在set_name2集合中,只能对比两个集合
返回情况:true / false
注意: 当set..issubset(set_name1,set_name2,set_name3)时,会直接默认判断set_name1元素是否存在set_name2集合中

3、isdisjoint() 方法
语法:set_name1.isdisjoint(set_name2) / set.isdisjoint(set_name1,set_name2)
功能描述:判断两个集合中元素是否有交集
返回情况:true / false

    (2)判断两个集合元素是否相同

1、issuperset() 方法
语法:set_name1.issuperset(set_name2)
功能描述:判断set_name1中所有元素是否存在set_name2集合中
返回情况:true / false

s1={9,1,2,3,4,8,6,5}
s2={1,2,3}
s3={65,24,61,24,57,57,43,67}
s4=s3.copy()
print(2 in s1,s2 in s1,set.issubset(s2,s1),s4.issubset(s3)) #s2.issubset(s1)
print(s3.issuperset(s4),s2.issuperset(s3))
print(s1.isdisjoint(s3),s1.isdisjoint(s2))

在这里插入图片描述

    5、集合的并集

    (1)union() 方法

语法:set_name.union(set1[, set2...,setN])
功能描述:求两个集合的并集
返回情况:返回一个新集合

    (2) “|” 运算符

语法:set_name1 | set_name2
功能描述:求两个集合的并集
返回情况:返回一个新集合

实例代码:

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

运行结果:
在这里插入图片描述

    6、集合的交集

    (1)intersection()方法

语法:set_name1.intersection(set_name2)
功能描述:求两个集合的交集
返回情况:返回一个新集合

    (2)“&”运算符

语法:set_name1&set_name2
功能描述:求两个集合的交集
返回情况:返回一个新集合

    (3)intersection_update()方法

语法:set_name1.intersection_update(set_name2)
功能描述:求两个集合的交集
返回情况:无,直接修改原始集合
注意:当set.intersection_update(set_name1,set_name2,set_name3)时,会直接默认修改set_name1

实例代码:

s1={1,2,3,4,4}
s2={5,6,7,8,9,4}
s3={6,34,5,8,9,6,4}
print(s1.intersection(s2,s3))
print(set.intersection(s1,s2,s3))
print((s1&s2&s3)==(s3.intersection(s2,s1)))
s3.intersection_update(s1,s2)
print(s1,s2,s3)

运行结果:
在这里插入图片描述

    7、集合的差集

    (1)difference()方法

语法:set_name1.difference(set_name2[,set_name3..,set_nameN])
功能描述:求两个集合的差集
返回情况:返回一个新的集合,集合元素为set_name1的集合去掉两者的并集
注意:当set.difference(set_name1,set_name2,set_name3)时,会直接默认set_name1去掉剩余两者的并集

    (2)相减法

语法:set_name1-set_name2
功能描述:求两个集合的差集
返回情况: 返回一个新的集合,集合元素为set_name1的集合去掉两者的并集

    (3)difference_update()方法

语法:set_name1.difference_update(set_name2)
功能描述:求两个集合的差集
返回情况: 返回一个新的集合,集合元素为set_name1的集合去掉两者的并集
注意:当set.difference_update(set_name1,set_name2,set_name3)时,会直接默认set_name1去掉剩余两者的并集并修改set_name1

实例代码:

s1={1,2,3,4,4}
s2={5,6,7,8,9,4}
s3={6,34,5,8,9,6,4}
print(s1.difference(s2,s3))
print(set.difference(s2,s3))
print((set.difference(s2,s3))==(s3-s2))
print((s1.difference(s2,s3))==(s1-s2-s3))
s2.difference_update(s3)
print(s1,s2,s3)

运行结果:
在这里插入图片描述

序列数据类型区别

数据类型元素是否可变是否有序是否可哈希运算
列表×list*number / list1+list2(操作前后序列的id值不变)
元组×tuple*number / tuple1+tuple2 ( 操作前后序列的id值改变)
字典×××
集合×××
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值