python的list的基本操作、list循环、切片、字典基本操作、字典嵌套、字...

python的list的基本操作、list循环、切片、字典基本操作、字典嵌套、字...

2023年7月26日发(作者:)

python的list的基本操作、list循环、切⽚、字典基本操作、字典嵌套、字符串常⽤⽅法上⾯说了字符串和整形,那现在要是想存⼀个班级的⼈的名字,这个班有200个⼈,怎么存呢,⽤字符串的话,那就是names = 'marry lily king .....'这样,但是这样存是可以存,那要是想取到某个⼈的名字怎么取呢,不能再去⾥⾯看⼀遍吧,那累死⼈了,为了解决这个问题,⼜有⼀种新的数据类型应运⽽⽣,那就是列表,这也是我们在以后的开发过程中,最常⽤的数据类型之⼀,列表也叫数组,列表定义,使⽤[]#list的是⼀种新的数据类型,也可以叫数组:stus=['谢谢','谢1','谢2','谢3','谢4',19.3,89]#⾥⾯的每个元素可以叫下标、索引、⾓标print(stus[6])#定义⼀个空的数组:stus=[]或者stus = list()# 关于List的增、删、改、查# list 的增stus=['谢谢','谢1','谢2','谢3','谢4']('谢5')#append在list的末尾增加⼀个元素('谢6')(0,'谢0')#insert在list的指定位置增加元素(2,'谢哈')(20,'谢20')#insert时,如果指定位置不存在时,直接在最后增加这个元素print(len(stus))#看list⾥⾯元素的个数有⼏个print(stus)# list的改,改只有下⾯⼀种⽅式stus=['谢谢','谢1','谢2','谢3','谢4']stus[0] = 'xiexie'print('改完之后的:',stus)#下标写负数时,是指从后⾯元素开始找,下标-1代表最后⼀个元素print(stus[-1])#list的删除stus=['谢谢','谢1','谢2','谢3','谢4']# ⽅法⼀:()#⽤pop时,默认删除最后⼀个元素,同时也可以传⼀个下标来删除(-1)# ⽅法⼆:('谢谢')#只能删除指定的元素,不能不传#⽤pop传⼀个不存在的下标、⽤remove传⼀个不存在的元素:(-10)#会报错:IndexError: pop index out of range(下标越界,下标不存在)('哈哈')#会报错:ValueError: (x): x not in list(元素不存在列表中)del stus[-1] #删除指定的元素()#清空列表print(stus)#list的查询stus=['谢谢','谢1','谢2','谢3','谢4'](-1,'谢谢')('谢3')print(stus)#根据下标来取值print(stus[-1])# 查询⽅法('谢谢')#查询某个元素在list⾥⾯出现的次数#删除⼀个不存在的元素:返回('谢3')print(('谢3'))#找某个元素的下标('谢1')print(('谢1'))#如果list⾥⾯有多个元素,返回的是第⼏个的下标:返回第⼀个元素的下标('谢谢')print(('谢谢'))#如果元素不存在时,返回的是什么:报错:ValueError: '谢10' is not in list(该元素不在这个列表⾥⾯)('谢10')print(('谢10'))列表操作,⼀些内置的⽅法e()#反转nums = [1,5,3,4]()#排序 中⽂⽆法排序,英⽂和数字可以(默认升序)(reverse=True)#如果想要降序排列sort⾥⾯加reverse=True,升序Falseprint(nums)# ()#把⼀个元素⾥⾯的List加到另外⼀个元素⾥⾯(nums)#把nums⾥⾯的元素加到stus⾥⾯print(stus)#布尔类型#True Flase 我们在写判断的时候所有的表达式都会转换成布尔类型#stus=['谢谢','谢1','谢2','谢3','谢4']print(stus)#⽤count判断:if ('哈哈')>0: print('存在')else: print('不存在')#⽤in判断if '谢谢' in stus: print('存在')else: print('不存在')list循环stus = ['杨静', '王志华', '王银梅', '乔美玲', '段鑫琪', '王⽴⽂', '赵燕', '杨华', '周永波', '杨静']# for s in stus:# print('⽤户名是:%s'%s)# for a in range(len(stus)):#rang下标# print(stus[a])# count = 0# while count %s'%(index,stu))enumerate的⼀般⽤途:choice = ['注册','登录','退出','购物']s ='输⼊编号进⼊对应的操作:'print(s)for index,a in enumerate(choice): print('%s ===>%s'%(index,a))多维数组表⾥⾯可以再套列表,⼀个⾥⾯套⼀个列表,叫⼆维数组;⼀个⾥⾯套⼀个列表,⾥⾯的列表再套⼀个列表,这个叫三维数组,套⼏层就是⼏维,定义格式如下:stu =[1,2,3,4]#⼀维stu1 =[1,2,3,4,['a','b','c'],['d','e','f']]#⼆维#把d改成ddstu1[5][0] = 'dd'print(stu1)stu2 =[1,2,3,4,['a','b','c',['啊','啊1','啊2']]]#三维#在啊前⾯增加⼀个元素呵stu2[4][3].insert(0,'呵呵')print(stu2)通过下标访问列表中的元素,下标从0开始计数,也就是说,⽐如说⼀个列表,有个5元素,那么它第⼀个元素下标就是0,第⼆个就是1,以此类推,字符串也有下标,和列表⼀样 对列表的操作,分以下⼏种增、删、改、查增: msg = '你好' name = ['andashu','cc','niuniu'] (msg)#从最后⾯开始插⼊ (1,msg) #从指定位置插⼊,这个1代表下标

print(name)改:

12 msg = '你好'3 name = ['andashu','cc','niuniu'] name[1] = 'baby' #修改指定位置的值     查:

12 msg = '你好'34 name = ['andashu','cc','niuniu'] print(name[0])#获取第⼀个元素 print(name[-1])#-1代表最后⼀个元素删:

12 msg = '你好'34 name = ['andashu','cc','niuniu']56 ('baby')#删除指定的值 del name[0]#删除指定位置的值 ()#不传⼊下标的话,删除最后⼀个值,传⼊下标删除指定位置的值 ()#清空列表     #切⽚:列表取值的⼀种⽅式,可以指定范围取值:语法:【起始:结束:步长】# 切⽚,切⽚也就是另⼀种⽅式获取列表的值,它可以获取多个元素,可以理解为,从第⼏个元素开始,到第⼏个元素结束,获取他们之间的值,格式是name:[1:10],⽐如说要获取name的第⼀个元素到第五个元素,就可以⽤name[0:6],切⽚是不包含后⾯那个元素的值的,记住顾头不顾尾;前⾯的下标如果是0的话,前⾯可以省略不写,这样写,name[:6],切⽚后⾯还有可以写⼀个参数,叫做步长,也就是隔多少个元素,取⼀次,默认可以不写,也就是隔⼀个取⼀次,切⽚操作也可以对字符串使⽤,和列表的⽤法⼀样,实例如下:stu =[1,2,3,4,5,6,7,8,9]print(stu[2:6])print(stu[2:9:2])print(stu[::-3])#如果步长为负数时,从右往左取值print(stu[0:5])print(stu[:5])#如果最前⾯的下标没有写代表从最前⾯开始取print(stu[5:10])print(stu[5:])#如果最后⾯的下标没有写代表取到最后print(stu[:])#什么都没写代表从前取到尾new_stu = stu[:] #复制⼀个新的listnew_stu = stuprint(new_stu)#下标,索引,切⽚,同样适⽤于字符串,字符串也是可以循环的# 字符串⼀旦定义好就不能修改name = '马上要去吃饭了'print(name[2:])print(len(name))#循环字符串for a in range(len(name)): print('下标是:%s,字是:%s'%(a,name[a]))for a,b in enumerate(name): print('下标是:%s,⽂字是:%s'%(a,b))name[1]='去吃饭'#报错TypeError: 'str' object does not support item assignment(字符串⼀旦定义好就不能修改)# stus_info = [['杨静',18,'⼥','dddd'],['王志华',18,'⼥','dddd'],['王银梅',18,'⼥','dddd'],['周永波',18,'⼥','dddd']]#多维数组## for stu in stus_info:# if stu[0]=='王志华':# print(stu)字典上⾯说了,整形、浮点型、字符串、列表和元组,下⾯说个新的数据类型,字典,字典也是我们开发过程中最常⽤的⼀种数据类型;想⼀个问题,现在要存整个北京市的所有⼈的信息,每个⼈有姓名、年龄、性别、家庭住址、学历等等,那要是⽤列表存的话,那就得定义N多个数组,然后存上每个⼈的信息,那累死⼈了。。。这时候⼜有⼀种新的数据类型出现了,那就是字典,dict,全称是dictionary,它具有极快的查找速度;字典是⼀种key-value的数据类型,⽐如说要存每个⼈的信息,那么每个⼈的编号就是key,value就是每个⼈的信息,这样的话,⼀个字典就能存所有⼈的信息了。字典的定义使⽤{},⼤括号,每个值⽤“,”隔开,key和value使⽤“:”分隔。举个列⼦,如果⽤列表存每个⼈的信息的话,需要⽤两个列表,⼀个存⼈名,⼀个存信息:

1 names = ['marry','amy','lily']2 infos = [[18,,'北京'],[20,,'⼭东'],[25,,'河南']]给⼀个名字,如果要查他的对应信息,那就要先从names⾥⾯找到它的位置,然后再从infos中找到它的信息,如果这个列表越长,那么它的查询速度越慢。如果⽤字典实现的话,只需要⼀个名字和信息对应的⼀个表,这样就很快的根据名字找到它对应的信息,⽆论这个表有多⼤,查找速度都不会变慢。1 infos = {'marry':[18,,'北京'],'amy':[20,,'⼭东'],'lily':[25,,'河南']}

2 infos['marry'] #取marry的信息为什么dict查找速度这么快?因为dict的实现原理和查字典是⼀样的。假设字典包含了1万个汉字,我们要查某⼀个字,⼀个办法是把字典从第⼀页往后翻,直到找到我们想要的字为⽌,这种⽅法就是在list中查找元素的⽅法,list越⼤,查找越慢。第⼆种⽅法是先在字典的索引表⾥(⽐如部⾸表)查这个字对应的页码,然后直接翻到该页,找到这个字。⽆论找哪个字,这种查找速度都⾮常快,不会随着字典⼤⼩的增加⽽变慢,这种就是字典的实现⽅式。字典的特性:字典是⽆序的,因为它没有下标,⽤key来当索引,所以是⽆序的字典的key必须是唯⼀的,因为它是通过key来进⾏索引的,所以key不能重复,天⽣就去重字典的增删改查:#定义空字典,字典是⼀种Key values形式的stu_info = {}stu_info = dict()#定义空字典:stu_info = dict() stu_info{}#字典⼀个逗号代表⼀个元素,字典⽐列表的速度快,字典⾥⾯的Key是不能重复的,如果有重复的,后⾯的那个会覆盖前⾯的那个# stu_info = {'name':'王志华','age':18,'addr':'北京'}# print(stu_info['name'])# res =list(range(1000000))# print(res)# list越慢去找list会越慢,但是字典不会,因为字典⾥⾯的⾥⾯key不能重复# josn是个字符想,想变成字典必须转换,josn只是格式长的像字典#字典查询⽅法:stu_info = {'name': '王志华', 'age': 18, 'addr': '北京'}print(stu_info)⽅法⼀:print(stu_info['name'])print(stu_info['age'])⽅法⼆:print(stu_('name'))#⽤,get⽅法和【】的取值来看看如果key不存在的情况分别做如何处理:# print(stu_info['sex'])#[]取值时会报错:KeyError: 'sex'# print(stu_('sex'))#不会报错:None,None代表什么都没有print(stu_('sex','⼥'))#如果从系统⾥⾯get不到这个参数,就给他⼀个默认值#字典修改⽅法:修改只有下⾯⼀种⽅法stu_info = {'name': '王志华', 'age': 18, 'addr': '北京'}stu_info['addr']='上海'print(stu_info)#字典新增⽅法:stu_info = {'name': '王志华', 'age': 18, 'addr': '北京'}# ⽅法⼀:stu_info['zhiye']='测试'# ⽅法⼆:stu_ault('email','5852546@')#分别⽤上⾯两种新增⽅法新增已经存在的key:字典的key都是⽆序的# stu_info['name'] ='刘美燕'#不报错替换之前的valuestu_ault('name','哈全哈')#不报错也不修改之前value的值print(stu_info)#字典删除⽅法:stu_info = {'name': '王志华', 'age': 18, 'addr': '北京'}# ⽅法⼀:stu_('addr')# ⽅法⼆:# stu_()#清空这个字典# ⽅法三:# stu_m()#从字典⾥⾯随机删除⼀个元素# ⽅法四:# del stu_info['addr']# 分别⽤⽅法⼀和⽅法四删除⼀个不存在的Key# stu_m('email')#报错:TypeError: popitem() takes no arguments (1 given)del stu_info['email']#报错:KeyError: 'email'print(stu_info)#关于字典的其他⼀些⽅法:d1={'b':'1'}d2={'a':'v'}(d2)#将d2的元素指定到d1⾥⾯print(d1)()print(())#key获取字典⾥⾯所有的()print(())#values获取字典⾥所有的values#试⼀下直接循环字典,看看每次都循环的是:每次循环的是字典的keystu_info = {'name': '王志华', 'age': 18, 'addr': '北京'}for a in stu_info: print(a)#判断这个字典的Key是否存在:下⾯第⼀种⽅法更快# ⽅法⼀:print('name' in stu_info)# ⽅法⼆:print('name' in stu_())# 同时取到key和value的⽅法:下⾯两种⽅法第⼀种⽅法更快因为第⼆种会把字典⾥⾯的key和value变成⼀个⼆维数组# ⽅法⼀:for a in stu_info: # print('字典的key是:%s,字典的value是:%s'%(a,stu_(a))) print('字典的key是:%s,字典的value是:%s'%(a,stu_info[a]))# ⽅法⼆:⽤.items⽅法可以同时取到key和valuefor a,b in stu_(): print('字典的key是:%s,字典的value是:%s'%(a,b))字典的内置⽅法:

1 dic = {'stu1':'cc','stu2':'andashu','stu3':'niuniu'}2 print(())#打印所有value3 print(())#打印所有的key4 print(ault('stu1','fengluo'))#如果这个key存在的话,那就不动它,不存在的话,添加⼀个5 dic2 = {'stu1':'sriba','stu10':'baidu'}6 (dic2)#更新字典值,如果key存在的话,就更新,不存在的话就添加7 print(())#字典转换成⼀个list#字典多层嵌套字典# stu_info ={# '王志华':{'password':'w12345','phone':,'age':18,'addr':'北京'},# '王银梅':{'password':'w32123','phone':,'age':20,'addr':'上海'}# }# print(stu_info['王志华']['phone'])d = { '春波':{"car":['BMW','ben-a','五菱宏光'],"house":["北京",'南京','上海'], "money":1000000,}, '乔美玲':{"bag":['xx','lv',],"house":['三环','4环'],"hzp":['skii','ysl']}}#春波买了⼀辆雪佛兰# d ['春波']['car'].insert(3,'雪佛兰')# print(d)#春波需要卖⼀套房# d['春波']['house'].pop(2)# d['春波']['house'].remove('上海')# print(d)#春波因为卖房钱增加500万# d['春波']['money']=d['春波']['money']+5000000# d['春波']['money']+= 5000000# print(d)f = { '春波':{ "car":{'BMW':5,'BENZ':3,'audi':3,'byd':4}, "house":["北京",'南京','上海'],"money":1000000,}, '乔美玲':{"bag":['xx','lv',], "house":['三环','4环'],"hzp":['skii','ysl'],'language':{'普通话':10,'东北话':20,'⽇语':0,'英语':4}}}#乔美玲东北话降为10级# f['乔美玲']['language']['东北话'] =10# print(f)#看⼀下乔美玲会多少种语⾔# s = f['乔美玲']['language'].keys()# print(s)#春波总共有多少辆车# ⽅法⼀:# s =f['春波']['car'].values()# count =0# for d in s:# count = d+ count# print(count)# ⽅法⼆:# ⽤内置函数sum# s =f['春波']['car'].values()# print(sum(s))#⾃主完成:g = { '春波':{ "car":{'BMW':5,'BENZ':3,'audi':3,'byd':4}, "house":["北京",'南京','上海'],"money":1000000,}, '乔美玲':{"bag":['xx','lv',], "house":['三环','4环'],"hzp":['skii','ysl'],'language':{'普通话':10,'东北话':20,'⽇语':0,'英语':4}}}#1、春波卖了⼀⼤上海的房⼦,卖了5000000:g['春波']['house'].remove('上海')g['春波']['money']+=5000000print(g)#2、春波有多少辆车:h =g['春波']['car'].values()print(sum(h))#3、春波买了⼀辆劳斯莱斯g['春波']['car'].setdefault('劳斯莱斯',1)print(g)#4、乔美玲东北话从20级变成10级g['乔美玲']['language']['东北话']=10print(g)#5、乔美玲会哪些语⾔:g['乔美玲']['language'].keys()print(g['乔美玲']['language'].keys())import getpass# s=' abc '# print(())#strip去空格# s()#getpass输⼊密码什么都看不见,pycharm不⽀持getpass#字符串常⽤⽅法:s ='.abc.'# new_s =('.')#默认是去空格和换⾏符,也可以指定某个内容# print(s)# print(('.'))# print(('.'))# print(('.'))#strip默认去掉字符串两边的空格和换⾏符,字符串都是有返回值的,调⽤某个⽅法后,只会⽣成⼀个新的字符串,原来的字符串不改变# print(('.'))#看某个元素出现的次数跟List是⼀样的print(('a'))#找索引,找某个字符串的下标print(('a'))#找索引,找某个字符串的下标#index和find的区别,如果字符串不存在时print(('d'))#查找的字符串不存在时,会报错:ValueError: substring not foundprint(('d'))#查找的字符串不存时不会报错:返回-1print(e('a','A'))#替换字符串f ='.abc.,abc,abcd,abEde'print(e('abc','ABC',3))#后⾯加个值代表⾥⾯有多个时,替换⼏个(从前往后数),如果不写就全部替换#下⾯两个可以在注册时候⽤到print(())#将⾥⾯的字母全部变成⼤写print(())#将⾥⾯的字母全部变成⼩写e ='abcdefg12汉'print(lize())#⾸字母⼤写print(with('a'))#判断是否以什么开头print(th('f'))#判断是否以什么结尾print(r())#判断是否全部⼩写print(r())#判断是否全部⼤写print(e())#判断是否是个标题,⾸字母⼤写可能是个标题print(t())#判断是否为纯数字print((50))#把字符串放在中间print((50,'*'))#把字符串放在中间,其它不够以什么来补齐print(e())#判断他是否是空格print(a())#判断他是否都是字母或汉字,不能有数字和特殊字符print(m())#字符串⾥⾯只要没有特殊字符就返回trueprint(ric())#判断是否为数字print(tifier())#是否为合法的变量名,变量名不能以数字和特殊字符开头# h ='insert into user value (%s,%s,%s)'%('name','password','sex')#这种太多了不好弄,需要限定顺序# format⽅法:format是⽤⼤括号来占位的,不限定顺序l = 'insert into user value({name},{password},{addr},' '{email})'k=(addr='上海',password=1345677,name='cuimeiping',email='9890@')print(k)J ={'addr':'北京','email':'20876701@','password':'c123','name':'cuimeiping'}# _map()#可以传⼀个字典J =_map(J)print(J)#把下⾯的数字变成01,02,03.。。P = [1,2,3,4,5,6,7,8,9,10,11,12]# for i in P:# if i>9:# print(i)# else:# res = '0' + str(i)# print(res)#字符串提供⼀个⽅法可以不⽤循环zfillU ='1'print((3))#3代表⼏位数,不够补0#有下⾯⼀批⽤户需要把它们单独插⼊到数据库,需要单独拿出user1,user2。。。R ='user1,user2,user3,user4,user5,user6,user7'#可以按,分割⼀下,分割成⼀个List,按照某个字符在分隔字符串,返回⼀个Listprint((','))print(())#默认什么都不传时,按照⼀个空格来分隔字符串,多个空格也是⼀样分隔cars =['BMW','BEN-Z','BYD']res ='-'.join(cars)#以某个字符串把list⾥⾯元素连起来(把list的变成⼀个字符串)前⾯指定⼀个字符串,把list的⾥⾯的元素变成⼀个字符串print(res)print(str(cars))#直接把List转成字符串,但是会带【】,这样第⼀个元素变成【操作⽂件#操作⽂件#读⽂件:读⽂件时⽂件必须存在f =open('',encoding='utf-8')res = ()print(res)()#写⽂件:w模式写⽂件的时候如果重新写会覆盖之前写的 a模式之前的东西还在# e = open('user1',mode='w',encoding='utf-8')# ('cuimeiping2,c890')# ()#a模式写之前的东西还在e = open('user1',mode='a',encoding='utf-8')('cuimeiping3,c890n')()e =open('user1',encoding='utf-8')e =open('user1',encoding='utf-8')res = ()print(res)()#练习1、写注册的程序: username: password: cpassword: 册过的,两次密码必须输⼊⼀致 账号、密码的长度要在6-10之间 注册完成之后,存到⽂件⾥⾯2、登录,账号密码是从⽂件⾥⾯取的,如果输⼊的账号不存在要提⽰。 登录的时候账号不区分⼤⼩写#先把⽂件的账号和密码放到list或字典⾥fw=open('a',encoding='utf-8')list= ()()#分隔rest=()#分隔print(rest)user_dict={}#定义⼀个空字典for i in rest: # name= (',')[0] # password = (',')[1] # print(name) # print(password) name,password=(',') # print(name) # print(password) user_dict[name]=password print(user_dict)fr = open('a','a')# ----注册------for a in range(3): user_name=input('请输⼊⽤户名').strip().upper() user_password=input('请输⼊密码').strip() user_passcword=input('请输⼊确认密码').strip() if user_name==name: print('⽤户名已经存在') elif user_password !=user_passcword: print('两次密码不⼀致') elif len(user_name )not in range(6,11) or len(user_passcword) not in range(6,11): print('账号、密码的长度要在6-10之间') # elif user_name==''or user_passcword=='': # print('⽤户名密码不能为空') else: print('注册成功') user_dict[user_name]=user_passcword # g='%s,%sn'%(user_name,user_passcword) ('%s,%sn'%(user_name,user_passcword)) breakelse: print('输⼊次数过多') ()#-----登录-----fl=open('a','a+',encoding='utf-8')(0)res=()print(res)#要把⽂件内容分隔出来放到⼀个List⾥⾯res_list=()print(res_list)dic ={}#for a in res_list: # if () !='':#判断是否为空⾏ name,password=(',') print(name) print(password) dic[name]=passwordprint(dic)for i in range(3): res_name=input('请输⼊⽤户名').strip().lower() res_password=input('请输⼊密码').strip() if res_name==''or res_password=='': print('⽤户名密码不能为空') elif res_name not in dic: print('⽤户名不存在') elif res_password!=(res_name): print('密码不正确') else: print('登录成功') breakelse: print('输⼊次数过多')

发布者:admin,转转请注明出处:http://www.yc00.com/news/1690306595a329740.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信