版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章序列结构3.5集合3.4字典3.2列表3.6封装与拆封3.3元组3.1序列概述3.1序列概述3.1序列概述
序列(sequence)是一种用来存放多个值的数据类型,序列中对象类型可以相同也可以不同。
序列中的每个元素可以通过索引来进行访问(集合类型除外)。序列按照其中的元素是否可变分为可变序列和不可变序列,按照元素是否有序分为有序序列和无序序列。3.2列表
列表是Python内置的有序、可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开。当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙。在Python中,一个列表中的数据类型可以各不相同,可以同时为整数、实数、字符串等基本类型,甚至是列表、元组、字典、集合以及其他自定义类型的对象。Python中列表存放的元素是值的引用,并不直接存储值,列表类似于其它语言的数组。需要注意的是,列表的功能虽然非常强大,但是负担也比较重,开销较大,要尽量避免过多使用列表。
1.列表的创建和删除将列表元素放置在一对方括号[]内,以逗号分隔,将这个列表赋值给变量,即可创建列表。也可以使用list()函数将元组、range对象、字符串或其他类型的可迭代对象类型的数据转换为列表。当列表不再使用时,使用del命令删除整个列表。>>>c=["123",a,b]>>>d=list("abc")>>>list(range(1,10,2))>>>delc3.2列表3.2列表2.
列表的赋值和拷贝1)
浅拷贝浅拷贝会创建新对象,其内容是原对象的引用。切片操作返回的是列表元素的浅拷贝,也就是生成一个新的列表,并且把原列表中所有元素的引用都复制到新列表中。如果原列表中只包含整数、实数、复数等基本类型或元组、字符串这样的不可变类型的数据,一般是没有问题的(不会影响)。如果原列表中包含列表之类的可变数据类型,由于浅拷贝时只是把子列表的引用复制到新列表中,这样的话修改任何一个都会影响另外一个。3.2列表>>>a=[1,2,3,"welcome",["C","Java","PHP"]]>>>b=a.copy() #浅拷贝a>>>aisb #a、b指向不同的对象引用,内存地址不相同False>>>a[3]="hello">>>b[1,2,3,'welcome',['C','Java','PHP']]>>>a[4].append("Python") >>>b[1,2,3,'welcome',['C','Java','PHP','Python']]3.2列表2)深拷贝深拷贝拷贝两层。原始对象的改变不会造成深拷贝里任何子元素的改变,使用copy模块中的deepcopy()函数。>>>importcopy >>>a=[1,2,3,"welcome",["C","Java","PHP"]]>>>b=copy.deepcopy(a) >>>aisbFalse>>>a[4].append("Python")>>>b[1,2,3,'welcome',['C','Java','PHP']]
3.2列表3)直接赋值在python中,对象赋值实际上是拷贝对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用。如果原始列表改变,被赋值的对象也会做相同的改变。>>>a=[1,2,"hello",["welcome","world"]]>>>b=a #变量b复制a的对象引用>>>a[2]="xi'an" #修改列表内容>>>b[1,2,"xi'an",['welcome','world']] #修改列表内容3.2列表3.
列表的常用操作1)转换其它数据类型到列表使用list()函数可以完成对可迭代对象的列表转换,字符串对象可以通过split()完成到列表的转换。>>>list("cat") ['c','a','t']>>>birthday='07/28/1974' >>>birthday.split("/") #转化字符串到列表['07','28','1974']3.2
列表2)列表元素的访问与计数列表元素的访问采用lst[offset]方式,offset可以是正整数,也可以是负整数。
当offset为正整数时,表示从列表头开始计数,0≤offset≤len(lst)-1。当offset为负整数时,表示从列表末尾开始计数,len(lst)≤offset≤-1。当列表元素是序列时,可以采用二级下标方式lst[offset1][offset2]。
>>>a=[1,2,3,4,5,6,"abcd"]>>>a[0]1>>>a[-7]=10[10,2,3,4,5,6,'abcd']>>>a[6][0]'a'使用列表对象的index()方法获取指定元素首次出现的下标,若列表对象中不存在指定元素,则抛出异常。>>>aList[3,4,5,5.5,7,9,11,13,15,17]>>>aList.index(7)43.2
列表3)列表元素的增加列表元素的添加可以使用append()、extend()和insert(),或者使用“+”运算符。除了“+”运算符外,其它几个方法都属于原地操作。
append()方法通过append()方法在当前列表尾部追加元素,是原地修改列表,速度较快。extend()方法使用列表对象的extend()方法可以将另一个迭代对象的所有元素添加至该列表对象尾部。通过extend()方法来增加列表元素也不改变其内存首地址,属于原地操作。3.2
列表3.2
列表>>>aList=[3,4,5,6]>>>aList.append(7)>>>aList[3,4,5,6,7]>>>aList=[1,2,3,4]>>>aList.extend([5,6])>>>aList[1,2,3,4,5,6]
insert()方法使用列表对象的insert(index,x)方法可以将元素添加至列表的指定位置。列表的insert()方法可以在列表的任意位置插入元素,但由于列表的自动内存管理功能,insert()方法会引起插入位置之后所有元素的移动,这会影响处理速度。>>>aList.insert(3,6) #在下标为3的位置插入元素6>>>aList[1,2,3,6,4,5,6]3.2
列表3.2
列表使用“+”运算符如果是通过“+”运算符来增加列表元素,实际上是创建了一个新列表,并将原列表中的元素和新元素依次复制到新列表的内存空间。由于涉及大量元素的复制,该操作速度较慢,在涉及大量元素添加时不建议使用该方法。>>>aList=[1,2,3]>>>aList=aList+[4,5]>>>aList[1,2,3,4,5]使用“*”运算符使用乘法*来扩展列表对象,将列表与整数相乘,生成一个新列表,新列表是原列表中元素的重复。当使用*运算符将包含列表的列表重复并创建新列表时,当修改其中一个值时,相应的引用也会被修改。>>>bList=[[1,2,3]]*3>>>bList[0][0]=4>>>bList[[4,2,3],[4,2,3],[4,2,3]]3.2
列表4)列表元素的删除使用del命令、使用列表对象的pop()方法、使用列表对象的remove()方法。使用列表的pop()方法删除并返回指定位置(默认为最后一个)上的元素,如果给定的下标超出了列表的范围则抛出异常。使用列表对象的remove()方法删除首次出现的指定元素,如果列表中不存在要删除的元素,则抛出异常。3.2
列表
思考:
运行下面的程序,可以发现当循环结束后却发现并没有把所有的“1”都删除,只是删除了一部分。为什么会发生这种现象?>>>x=[1,2,1,2,1,1,1]>>>foriinx: ifi==1: x.remove(i)>>>x[2,2,1]3.2
列表
原因在于列表的自动内存管理功能。当删除列表元素时,Python会自动对列表内存进行收缩并移动列表元素,以保证所有元素之间没有空隙,增加列表元素时也会自动扩展内存并对元素进行移动以保证元素之间没有空隙。每当插入或删除一个元素之后,该元素位置后面所有元素的索引就都改变了。
3.2
列表>>>x=[1,2,1,1,1]>>>count=1>>>foriinx:
print("-----before-----\n",x)
print("position:%d\telement:%d"%(count,i)) ifi==1:
x.remove(i) print("----after----\n",x) count+=1-----before-----[1,2,1,1,1]position:1 element:1----after----[2,1,1,1]-----before-----[2,1,1,1]position:2 element:1----after----[2,1,1]-----before-----[2,1,1]position:3 element:1----after----[2,1]
如何解决呢?可以改变删除元素的方向,从后向前删除,当列表收缩时右侧元素的移位就不会造成元素索引位置变化导致的错误。>>>x=[1,2,1,2,1,1,1]>>>foriinrange(len(x)-1,-1,-1):#从后往前删,下标范围[6,-1) ifx[i]==1: delx[i]>>>x[2,2]3.2
列表也可以使用切片来完成>>>x=[1,2,1,2,1,1,1]>>>foriinx[::]:
#使用切片
ifi==1:
x.remove(i)
5)列表元素的排序和反转实际中,经常需要对列表的元素进行排序,可以使用sort()和sorted()。列表对象的sort()方法用于按照指定的规则对列表中所有元素进行原地排序,该操作会改变原来列表元素的顺序。
sorted()排序后会生成新列表,原列表不会改变。
reverse()方法用于将列表所有元素逆序或翻转。>>>a[15,8,14,16,10,19,13,18,11,17,12,9] >>>b=sorted(a) #产生新列表存放排序结果3.2
列表>>>a.sort(key=str) #原地排序,指定排序依据根据字符串大小>>>a[10,11,12,13,14,15,16,17,18,19,8,9]>>>a.reverse() #反转列表,原地操作>>>a[9,8,19,18,17,16,15,14,13,12,11,10]3.2
列表6)列表切片操作使用语法“list_name[start:end:step]”来返回列表list_name的一个片段。第一个数字start表示切片开始位置,默认为0;第二个数字end表示切片截止(但不包含)位置,默认为列表长度;第三个数字step表示切片的步长,默认为1。当start为0时可以省略,当end为列表长度时可以省略,当step为1时可以省略,省略步长时还可以同时省略最后一个冒号。当step为负整数时,表示反向切片,这时start位置应该在end位置的右侧,否则会返回空列表,start默认为-1,end默认为列表第1个元素前面的位置。-1表示列表最后一个元素的位置,其它以此类推。3.2
列表3.2
列表使用切片获取列表的部分元素使用切片可以返回列表中部分元素组成的新列表。切片操作不会因为下标越界而抛出异常,而是简单地在列表尾部截断或者返回一个空列表,代码具有更强的健壮性。使用切片为列表增加/删除元素可以使用切片操作在列表任意位置插入新元素,但是并不影响列表对象的内存地址,属于原地操作。3.2
列表>>>numbers=[1,2,3,4,5,6,7,8]>>>a=numbers[::]#返回包含原列表中所有元素的新列表[1,2,3,4,5,6,7,8]>>>numbers[::2] #从第1个元素开始,隔1个取元素[1,3,5,7]>>>numbers[::-1] #反向切片[8,7,6,5,4,3,2,1]>>>numbers[1:3] #指定切片开始位置和结束位置,步长默认为1[2,3]>>>numbers[1::2] #指定切片开始位置和步长,省略结束位置[2,4,6,8]3.2
列表>>>num=[1,2,3,4,5]>>>num[len(num):]=[6,7,8]>>>num[1,2,3,4,5,6,7,8]>>>num[:0]=[-2,-1]>>>num[-2,-1,1,2,3,4,5,6,7,8]>>>aList=[3,5,7,9]>>>aList[:3]=[]#删除列表中前3个元素>>>aList[9]切片返回的是列表元素的浅拷贝>>>x=[3,4,[5,6]]>>>y=x[:]>>>id(y)==id(x)False>>>z=x>>>xiszTrue3.2
列表7)列表推导式列表推导式使用非常简洁的方式来快速生成满足特定需求的列表,代码具有非常强的可读性。列表推导式语法形式为:[expressionforexpr1insequence1ifcondition1forexpr2insequence2ifcondition2forexpr3insequence3ifcondition3...forexprNinsequenceNifconditionN]列表推导式在逻辑上等价于一个循环语句,只是形式上更加简洁。3.2
列表>>>num=[a*aforainrange(10)ifa!=5]>>>num[0,1,4,9,16,36,49,64,81]>>>nation=['China','France','England']>>>aList=[s.strip()forsinnation]>>>aList['China','France','England']>>>a=[1,2,3]>>>b=[4,5,6]>>>c=[x*yforxinaforyinb]#注意嵌套关系,第2个循环作为第1个循环的循环语句>>>c[4,5,6,8,10,12,12,15,18]3.2
列表>>>vec=[[1,2,3],[4,5,6],[7,8,9]]>>>[numforeleminvecfornuminelem][1,2,3,4,5,6,7,8,9]等价于:>>>result=[]>>>foreleminvec: fornuminelem: result.append(num)3.2
列表在列表推导式中使用多个循环,实现多序列元素的任意组合,并且可以结合条件语句过滤特定元素>>>[(x,y)forxinrange(3)foryinrange(3)][(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]>>>[(x,y)forxin[1,2,3]foryin[3,1,4]ifx!=y][(1,3),(1,4),(2,3),(2,1),(2,4),(3,1),(3,4)]使用列表推导式实现矩阵转置>>>matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]] #3*4矩阵
--->4*3矩阵
>>>[[row[i]forrowinmatrix]foriin
range(4)][v**2ifv%2==0elsev+1forvin[2,3,4,-1]ifv>0][4,4,16]>>>x=list(range(10))>>>x[0,1,2,3,4,5,6,7,8,9]>>>[item>5foriteminx][False,False,False,False,False,False,True,True,True,True]>>>[pforpinrange(2,100)if0notin[p%dfordinrange(2,int(p**0.5)+1)]][2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]8)列表成员测试使用in/notin运算符可以判断一个元素是否在列表中。>>>aList=[1,2,3]>>>a=2>>>ainaListTrue>>>4notinaListTrue3.2
列表9)列表的比较关系运算符(<、>、==、!=、<=、>=)也可以用来对列表进行比较。>>>list1=[1,2,3]>>>list2=[2,5,6]>>>list1>list2False>>>list1<list2True10)
多个列表的迭代使用zip()函数可以完成对多个列表的迭代。>>>days=['Monday','Tuesday','Wednesday']>>>courses=['math','english','computer','science']>>>forday,courseinzip(days,courses): #当最短的列表迭代完时,zip()将停止 print(day,":study",course)Monday:studymathTuesday:studyenglishWednesday:studycomputer3.3元组3.3
元组
列表的功能虽然很强大,但负担也很重,在很大程度上影响了运行效率。有时候我们并不需要那么多功能,很希望能有个轻量级的列表,元组(tuple)正是这样一种类型。列表和元组都属于有序序列,都支持使用双向索引访问其中的元素。元组属于不可变(immutable)序列,不可以直接修改元组中元素的值,也无法为元组增加或删除元素。元组没有提供append()、extend()和insert()等方法,无法向元组中添加元素;同样,元组也没有remove()和pop()方法,也不支持对元组元素进行del操作,不能从元组中删除元素,而只能使用del命令删除整个元组。
元组也支持切片操作,但是只能通过切片来访问元组中的元素,而不允许使用切片来修改元组中元素的值,也不支持使用切片操作来为元组增加或删除元素。Python内部实现对元组做了大量优化,访问速度比列表更快。如果定义了一系列常量值,主要用途仅是对它们进行遍历或其他类似用途,而不需要对其元素进行任何修改,那么一般建议使用元组而不用列表。3.3
元组3.3
元组1.
元组的创建和删除将元组元素放置在一对方括号()内,以逗号分隔,将这个元组赋值给变量,即可创建元组。也可以使用tuple()函数将元组、range对象、字符串或其他类型的可迭代对象类型的数据转换为列表。当不再使用时,使用del命令删除整个列表。
>>>t1=(1,2,3) #直接把元组赋值给一个变量>>>t[1]=10 #元组是不可改变Traceback(mostrecentcalllast):TypeError:'tuple'objectdoesnotsupportitemassignment>>>t2=(4) #和t2=4是一样的>>>t3=(4,) #元组中只有一个元素,必须在后面多写一个逗号>>>t4=tuple(range(5)) #将其他迭代对象转换为元组>>>t5=() #空元组>>>color_tuple='Red','Green','Blue'
#多个元素时,可以省略()>>>color_tuple('Red','Green','Blue')>>>delt4
#只能删除整个元组>>>delt4[1]
#不能删除元组元素3.3
元组2.元组的基本操作元组也是序列,因此一些用于列表的基本操作也可以用在元组上。可以使用下标访问元组的元素,支持两个方法count()和index(),提供in和notin运算符来判断元素是否在元组中,提供对元组进行切片等等。>>>t=(1,2,3)>>>tt=tuple(range(4,7))>>>print("Thesecondelementintis%d"%t[1])Thesecondelementintis23.3
元组>>>ttt=t+tt #元组连接>>>ttt(1,2,3,4,5,6)>>>tttt=ttt[1:7] #元组切片>>>tttt(2,3,4,5,6)>>>tttt.count(2) #计算指定元素出现的次数1>>>tttt.index(5) #计算指定元素第1次出现的下标3>>>(1,2,3)*3 #元组可以数乘(1,2,3,1,2,3,1,2,3)3.3
元组3.3
元组3.生成器推导式在形式上生成器推导式使用圆括号作为定界符。与列表推导式最大的不同是,生成器推导式的结果是一个生成器对象。生成器对象类似于迭代器对象,具有惰性求值的特点,只在需要时生成新元素,比列表推导式具有更高的效率,空间占用非常少,尤其适合大数据处理的场合。使用生成器对象的元素时,可以根据需要将其转化为列表或元组,也可以使用生成器对象的__next__()方法或者内置函数next()进行遍历,或者直接使用for循环来遍历其中的元素。但是不管用哪种方法访问其元素,只能从前往后访问每个元素,不可以再次访问已访问过的元素,也不支持使用下标访问其中的元素。当所有元素访问结束以后,如果需要重新访问其中的元素,必须重新创建该生成器对象,enumerate、filter、map、zip等其他迭代器对象也具有同样的特点。3.3
元组>>>gg=((i+2)**2foriinrange(10)) #创建生成器对象>>>gg #生成器对象<generatorobject<genexpr>at0x0000000002B7B9A8>>>>list(gg) #将生成器对象转换为列表[4,9,16,25,36,49,64,81,100,121]>>>tuple(gg) #生成器对象已遍历结束,没有元素了()>>>g=((i+2)**2foriinrange(10)) #重新创建生成器对象>>>g.__next__() #使用生成器对象的__next__()方法获取元素43.3
元组3.4字典3.4字典
字典(又被称为关联数组)是包含若干“键:值”元素的无序可变序列,字典中的每个元素包含用冒号分隔开的“键”和“值”两部分,表示一种映射或对应关系。定义字典时,所有的元素放在一对大括号“{}”中。字典中元素的“键”可以是Python中任意不可变数据,例如整数、实数、复数、字符串、元组等可哈希数据,但不能使用列表、集合、字典或其他可变类型作为字典的“键”。另外,字典中的“键”不允许重复,而“值”是可以重复的。1.
字典的创建和删除使用赋值运算符“=”将一个字典赋值给一个变量,即可创建一个字典变量>>>empty_dict={} #定义一个空字典>>>bierce={ #定义一个非空字典 "day":"Aperiodoftwenty-fourhours", "positive":"Mistakenatthetopofone'svoice", "misfortune":"Thekindoffortunethatnevermisses" }3.4字典使用内置类dict以不同形式创建字典>>>lot=[(1,'a'),(2,'b'),(3,'c')] #定义一个列表>>>dict(lot) #使用dict类转换列表到字典{1:'a',2:'b',3:'c'}>>>keys=['a','b','c','d']>>>values=[1,2,3,4]>>>dic=dict(zip(keys,values)) #根据已有数据创建字典>>>color_dict=dict(name='red',value=0xff0000)#以关键参数的形式创建3.4字典3.4字典2.字典的赋值和拷贝使用赋值符“=”时,任何对原字典的修改,都会影响到指向它的新字典。使用copy()方法时,会产生一个新的字典,因此对原字典的修改,不会影响到新字典。>>>dic1={"green":"go","yellow":"goslowly","red":"stop"}>>>dic2=dic1>>>dic1["blue"]="gofast">>>dic2{'green':'go','yellow':'goslowly','red':'stop','blue':'gofast'}3.4字典3.字典的基本操作1)字典元素的访问使用“键”作为下标就可以访问对应的“值”,如果字典中不存在这个“键”会抛出异常。还可以通过get()方法返回指定“键”对应的“值”,并且允许指定该键不存在时返回特定的“值”。使用keys()方法得到所有的“键”,使用values()方法得到所有的“值”,使用item()方法得到所有的“键”和“值”>>>aDict={'年龄':19,'成绩':[85,90,68,72],'姓名':'王宁','sex':'男'}>>>aDict["年龄"] #访问“键”对应的“值”19>>>aDict.get('name','NotExists.') 'NotExists.'>>>aDict={'年龄':19,'成绩':[85,90,68,72],'姓名':'王宁','sex':'男'} >>>aDict.keys() #访问所有“键”dict_keys(['年龄','成绩','姓名','sex'])>>>aDict.values() #访问所有“值”dict_values([19,[85,90,68,72],'王宁','男'])>>>aDict.items() #返回整个字典内容dict_items([('年龄',19),('成绩',[85,90,68,72]),('姓名','王宁'),('sex','男')])3.4字典2)字典元素的添加使用字典的update()方法来添加元素,还可以使用“键”的方式来增加元素。>>>aDict={'年龄':19,'成绩':[85,90,68,72],'姓名':'王宁','sex':'男'}>>>aDict['年龄']=20>>>aDict['地址']="西安市长安区西京路1号" #使用键的方式添加元素>>>aDict.update({"电话":})#使用update()方法来增加元素>>>aDict{'年龄':20,'成绩':[85,90,68,72],'姓名':'王宁','sex':'男','地址':'西安市长安区西京路1号','电话':}3.4字典3)字典元素的修改有两种方法,可以通过“键”的方式来赋值,或者使用update()方法。>>>aDict.update({"成绩":[80,90,68,72]})>>>aDict["成绩"]=[60,70,80,90]>>>aDict{'年龄':20,'成绩':[60,70,80,90],'姓名':'王宁','sex':'男','地址':'西安市长安区西京路1号','电话':}3.4字典4)字典元素的删除删除字典元素可以使用del命令、使用字典对象的pop()和popitem()方法等方式。如果要删除字典所有元素使用clear()方法。>>>delaDict["成绩"]>>>aDict.pop("sex") #弹出指定键对应的元素'男'>>>aDict.popitem() #弹出一个元素,对空字典会抛出异常('电话',)>>>aDict.clear()3.4字典5)字典元素的排序字段可以按照“键”或者“值”来进行排序。>>>a={"a":10,"c":1,"b":100}#items()将字典的元素转换成了包含元组的可迭代对象,取元组中的第二个元素进行比较>>>sorted(a.items(),key=lambdaitem:item[1]) #按照“值”排序[('c',1),('a',10),('b',100)]3.4字典3.5集合3.5集合
集合(set)属于Python无序可变序列,使用一对大括号“{}”作为定界符,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,元素之间不允许重复。集合中只能包含数字、字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 遵纪守法商业运营信誉承诺书5篇
- 软件开发流程与项目管理工具模板
- 中小学语文教育互动式教育方法研究指南
- 回复系统升级计划及影响范围回复函(6篇范文)
- 人力资源招聘与选才综合评估工具
- 市场营销数据分析实战技巧手册
- 采购需求及供应商信息管理模板
- 项目管理流程规范与执行指南指导书
- 员工教育培训成果承诺函(8篇)
- 蓝天白云的美丽景色写景(11篇)
- 第18课 土壤湿度控制好 课件 2025-2026学年人教版信息科技六年级全一册
- 2025年佛山禅城语文校招笔试及答案
- 美容抗衰培训课件
- 《工业机器人现场编程》课件-任务4-工业机器人电机装配
- 《验检测机构资质认定管理办法(修订草案)》2025版(征求意见稿)修订内容及其新旧条文对照表
- 2025年半导体行业薪酬报告-
- 2026年陕西单招医卫大类护理医学检验专业技能模拟题含答案
- 2026年注册监理工程师(监理工作)考题及答案
- 多个项目合同范本
- 2026年江苏信息职业技术学院单招职业倾向性测试必刷测试卷附答案
- 2026年皖北卫生职业学院单招职业适应性测试题库附答案
评论
0/150
提交评论