python学习之列表、切片、元祖
列表也可以叫做(list、数组、arrary)
name = ['张三','李四','小萌','李丽','悟空'] # 0 1 2 3 4 下标、(角标,索引)
print(name[1])
print(name[-1]) #最前面一个元素下标是0,最后一个元素下标是-1
对列表进行增删改查
增 append(在列表末尾添加一个元素)、 insert
citys = [] citys.append('北京') #在列表末尾加增加一个元素 citys.insert(0,'上海') #在指定的位置增加一个元素 citys.append('广州') print(citys)
打印结果['上海', '北京', '广州']
删 pop remove clear
citys=['上海', '北京', '广州']
citys.pop(-1)#删除指定位置的元素 citys.remove('北京')#删除指定的元素 citys.clear() #清空列表 del citys[-1]#删除指定位置的元素 print(citys)
改
citys = ['上海','北京','广州'] citys[1] = '南京' #修改指定位置的元素,如果指定的下标不存在,会报错 print(citys)
打印结果
['上海','南京','广州']
查 index(获取下标)count(出现次数)
citys=['北京','上海','广州']
print(citys[0]) #查找指定位置的 print(citys.index('广州')) #获取元素的下标,如果找不到这个元素会报错 打印结果2 print(citys.count('广州'))#查找元素在列表中出现的次数 print(citys.reverse()) #就是把这个列表反转过来 print(citys) #查看反转过来的结果 nums = [1,5,76,56,4,23] nums.sort() #排序,升序
print(nums) #打印结果[1,4,5,23,56,74]
nums = [1,5,76,56,4,23]
nums.sort(reverse=True) #排序,降序 print(nums) #打印结果[74,56,23,5,4,1]
合并
citys = ['上海','北京','广州'] citys2 = ['杭州','江苏','厦门'] citys.extend(citys2) print(citys) #把ciytys2合并到citys print(citys+citys2) #合并列表 print(citys*2) #*几次就是复制几次
多维数组
words = ['name','code','flower',['usa','china''car']] #二维数组 words = ['name', 'code', 'flower', ['usa', 'china''car',['hello','198','nice']]] #三维数组 print(words[-1][-1][0]) #取hello print(words[-1][1]) #取china
list小练习,校验用户名是否合法
#校验用户名是否合法 #输入账号 #input #如果账号存在的,提示已经被注册,如果不存在,就让他去注册all_users[] #不能为空 strip() #用户名长度6-12位之间 len() 元素的个数 #最多输入3次 all_users = ['xiaomeng','niuhanyang','liangpan'] for i in range(3): username = input('请输入账号:').strip() if len(username)>5 and len(username)<13: if all_users.count(username)>0: #校验账号是否存在 print('账号已被注册') else: print('这个名字不错,快去注册吧!') break else: print('用户名长度不合法,长度在6-12位之间') else: print('输入次数过多')
切片,切片是list一种取值方式,取多个值。 它可以获取多个元素,可以理解为,从第几个元素开始,到第几个元素结束,获取他们之间的值,格式是lis[1:10]nums = ['李四','王五','宝宝','张三']
print(nums[0]) #取下标0的值 print(nums[1:3]) # 取下标1到3的值,但不包括3。 顾头不顾尾 print(nums[1:]) #取从第二个下标开始的后面所有元素。 如果从某个下标开始取,取到末尾结束,那么末尾的下标可以省略不写 print(nums[:2]) #如果从头开始取,取到后面某个下标结束,那么开头的下标可以不写 print(nums[:]) #取所有的 #带步长取值 lis = list(range(1,11)) #强制类型转换 print(lis) lis = [1,2,3,4,5,6,7,8,9,10]
#下标 0 1 2 3 4 5 6 7 8 9 print(lis[0:10:2]) #步长,隔几个取一次 [1,3,5,7,9] print(lis[0::3]) #步长,隔几个取一次 [1,4,7,10] print(lis[::-1]) #如果步长是正数的话,从左往右取值,[10,9,8,7,6,5,4,3,2,1] print(lis[::-2]) #如果步长是负数的话,从右往左开始取值[10,8,6,4,2] lis.reverse() #改变了原来list值 new_list = lis[::-1] #产生了新的list,不会改变原来list的值
print(new_list) #[1,2,3,4,5,6,7,8,9,10]
print(lis) #[10,9,8,7,6,5,4,3,2,1] #切片操作同样适用于字符串 info = '今天,天气很好' print(info[0:2])
list循环
for循环在循环可迭代对象的时候,每次循环的是里面的每一个元素 (字符串 list 都可以循环)
int float不可循环
#for循环在循环可迭代对象的时候,每次循环的是里面的每一个元素 (字符串 list 都可以循环) 二维数组循环 lists = ['张流量','李wifi','王路由器','牛网线',[1,2,3,4]] for name in lists: if type(name) == list: for i in name: print(i) print(name) lists = ['张流量','李wifi','王路由器','牛网线'] for name in lists: print(name) #字符串循环 words ='marry , lily' for i in words: print(i)
list循环小练习
stus=[ ['小明','未交'], ['小白','已交'], ['小紫','已交'], ['小红','未交'], ['小绿','未交'], ['小黄','未交'], ['小黑','已交'] ] pass_list = [ ] #所有已经交作业的同学 fail_list = [ ] #没有交作业同学的名字 stus[0][1] #取到状态 stus[0][0] #取到名字 for stu in stus:
#print(stu) ['小明','未交'] ['小白','已交'] ......['小黑','已交'] status = stu[1] #状态 name = stu[0] #取名字 if status == '未交': fail_list.append(name) else: pass_list.append(name) print('未交作业的所有同学是 %s , 总共有%s个人'%(fail_list,len(fail_list))) print('已交作业的所有同学是 %s , 总共有%s个人'%(pass_list,len(pass_list)))
元祖(tuple)
元祖也是一个list,他和list的区别是,元组里面元素无法修改,比如用户数据库的链接信息
t = (1,2,4,5,6,7) #print(type(t)) #试试循环,切片,下标取值,修改值能不能用 print(t[:3]) #切片 print(t[3]) #下标取值 for i in t: print(i) #循环 t[2] =9 print(t) #修改 不可修改 报错TypeError: 'tuple' object does not support item assignment mysql_coon = ('192.168.1.109','root','123456',3306,'my_db') #数据库 #如果元祖里面只有一个元素的话,那么必须在这个元素后面加一个逗号 word1 = (1) word2 = (1,) print('word1',type(word1)) print('word2',type(word2))