python3学习(三)列表、字典、元组、字符串常用操作
=======================================List 列表-==================================
#list--> 列表 数组 array
stu_name = ['托尔斯泰','菜菜','test',1,1.5,] #类型不固定,想加什么类型都可以
#下标、索引、角标,用来取值。
#计算机里面起始都是从0开始
print(stu_name[0])
#增
stu_name.append('测试林') #append 在list的末尾添加一个元素 print(stu_name) stu_name.insert(1, '小黑') #insert在指定位置添加元素 print('修改之前的:', stu_name)
#编程里面写代码都是和内存打交道的,变量都是存在内存的,运行一次结束后就销毁一次。不然内容会被沾满。
#cpu <---> mem <---> disk,mem中的数据,一重启就没了,要长久保存,就需要保存到disk
#改
stu_name[5] = '小胖' print('修改之后的:', stu_name)
#删
stu_name.append('小黑') #先增加 print(stu_name) stu_name.remove('小黑') #如果有一样的元素,只会删除第一个,若想都删除,则应当写循环 print(stu_name) stu_name.pop(1) #.pop删除元素,默认删除列表最后一个元素。 print('删除后的列表:', stu_name) stu_name.pop(4) #删除指定下标的元素, print('删除指定下标的元素:', stu_name) stu_name.remove('托尔斯泰') #删除指定的元素 print('删除指定的元素:', stu_name) stu_name.pop(18) #删除不存在的元素,会报错,下标越界 print(stu_name) del stu_name[-1] #-1代表删除最后一个元素,-2代表倒数第二个 print(stu_name)
#查
my_list = ['小黑','小白','小爱',1,2.2,1,1.5] print(my_list[-1]) print(my_list[0]) print(my_list.count(5)) #查询某个元素在list里面出现的次数,若不存在的元素则输入为0,。 print(my_list.count(1)) print(my_list.count('小黑')) print('index方法:',my_list.index(1)) #查找元素的下标,若查找元素不存在的话,会报错 print('reverse方法:',my_list.reverse()) #反转的意思,将list反转,无返回值,直接打印reverse结果为none。 print(my_list) # my_list.clear() #清空整个list # print(my_list)
nums = [9,7,6,5,5.6,9.9,-1,-3,0] nums.sort() #升序排序 print('sort 升序排序:',nums) nums.reverse() print('reverse 反转后降序排序:',nums) #如果指定了reverse则是降序 nums.sort(reverse = True) print('指定了reverse,降序排序:',nums) #把一个list里面的元素加入进去 nums.extend(my_list) print('把一个list里面的元素加入nums:',nums)
#相加
nums = nums + my_list print(nums)
#直接两个list直接相加
new_list = nums + my_list print(new_list) #也可以使用乘法,乘以几就代表复制几份 print(new_list*3)
=======================================List 切片操作-==================================
#切片就是list的取值的一种方式
l1 = list(range(1, 11)) #顾头不顾尾,打印 l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
l2= ['a','b','c','d','e','f','g','h','i','j','k','l','m','n'] #下标 0 1 2 3 4 5 6 7 8 9 10 11 12 13 print(l) print(l[0:3]) #打印出 [1, 2, 3] print(l[:5]) #如果最前面没写,代表从0开始取 print(l[4:]) #如果冒号后面的没有写,代表取到最后 print(l[::2]) #步长为2,代表从头到尾,隔两个取一次值
#取100以内的偶数
# 1 2 3 4 5 6 ……100 nums = list(range(1,101))[1::2] print(nums)
#取100以内的奇数
nums2 = list(range(1,101))[::2] print(nums2)
#如果最后面的步长是正数,那就从左到右取值
#如果最后面的步长是负数,那就从右到左开始取值
nums3 = list(range(1,101))[::-2] print(nums3) print(list(range(1,101))[::-1]) #1到100倒序
#切片同样适用于字符串
words = '中秋节要上课!' print(words[6]) print(words[::-1]) print(words[::2]) for w in (words): print(w) for index,w in enumerate(words): print('每次打印的',index,w)
#小练习:判断一个输入的字符串是否是回文(正读和反着读都是一样的,例如:123321等)
s = '上海自来水来自海上'
#回文算法 反过来倒过去都一样
#5678 8765
for i in range(10): s = input('请输入一个字符串:') if len(s) <= 1: print('字符串长度必须大于1!') elif s == s[::-1]: print("是回文") else: print("不是回文")
=======================================元组-==================================
mysql = ('118.24.3.40',3306,'root','123456') #元组也是一个列表,与列表唯一的区别是:元组是不可变列表,不能修改。只可以访问或者调用。 # mysql[1] = 3307 # print(mysql) #报错不能修改:TypeError: 'tuple' object does not support item assignment mysql = ('211.20.28.65',6739,'sasaa') #若要修改,只能重新定义 print(mysql[:3]) for m in mysql: print(m) mysql.count() mysql.index() #当元组中只有一个元素时,必须加一个逗号,不然会变成变量定义,例如t=(1),其类型为int,t=('a'),其类型为str l = [1] t =('a',) print(type(l)) print(type(t)) #括号提升优先级 if(1+2)*3 > 5:
=======================================字典操作-==================================
#使用字典,k-v的形式。优点:(1)访问速度很快;(2)好取值,因为无下标,直接用k来获取v
#定义一个空字典
stus ={ }
#增
#增加,方法一和方法二的区别:如下
#方法一 stus['name']='小军' #k=name,v=小军 stus['name']='hailong' #对name重新赋值,name此时等于hailong stus.setdefault('name','杨帆') #如果这个key已经存在,name就不修改它的值了。此时name还是hailong。
#方法二 stus.setdefault('age',18) stus.setdefault('sex','nan') stus.setdefault('addr','北京') stus.setdefault('phone',18222222222) print(stus)
#改
#修改,再一次赋值即修改 stus['name']='hailong'
#update stus.update({'money':1000}) print(stus)
#删
#删除 print(stus) del stus['phone'] stus.pop('sex') stus.popitem() #随机删除 print(stus)
#查
#查询 #print(stus['name']) #若不存在name,直接报错 print(stus.get('name')) #若不存在name,不会直接报错,返回none。 print(stus.get('name2','dada')) #如果没有name2,则新增name2,赋值dada print(stus) case ={ 'url':'http:www.baidu.com' 'method':'get' } #获取所有的值 print(stus.keys()) print(stus.values())
#循环
#循环方法一 for k in stus: print(k,'====>',stus.get(k)) #循环方法二 for k,v in stus.items(): print(k,'===>',v)
#字典的嵌套取值
#--------------------------------------- #如何让一个字典里面存下所有的学生信息 #使用字典嵌套 #下面是字典嵌套的取值 all_stus ={ 'xiaojun': { 'name':'xiaojun', 'sex':'男', 'shengao':185, 'age':18, 'email':'aa@qq.com', 'addr':'dadadad', 'id':1, 'cars':['牧马人','911','野马','劳斯莱斯',] }, 'hailong': { 'name': 'xiaojun', 'sex': '男', 'shengao': 185, 'age': 18, 'email': 'aa@qq.com', 'addr': 'dadadad', 'id': 1 }, 'yangfan': { 'name': 'xiaojun', 'sex': '男', 'shengao': 185, 'age': 18, 'email': 'aa@qq.com', 'addr': 'dadadad', 'id': 1, 'bags':{ 'qianbao':['lv','ysl'], 'beibao':['coach','abc'] } } } #再加一个五菱宏光 all_stus['xiaojun']['cars'].append('五菱宏光') print(all_stus) print(len(all_stus['xiaojun']['cars'])) #修改yangfan性别 all_stus['yangfan']['sex'] = '女' print(all_stus) #删除qianbao all_stus['yangfan']['bags']['qianbao'].remove('lv') #也可以使用pop print(all_stus)
=======================================字符串常用操作-==================================
#------------------字符串常用方法--------------------- password = ' 123456\n456789 ' print(password.strip()) #默认去掉字符串两边的空格和换行符,中间的换行符及空格照样存在 print(password) password2 = '.jpg 1234567 .jpg ABCDEF' print(password2.strip('.jpg')) #默认去掉.jpg print(password2.lstrip()) #去掉左边 print(password2.rstrip()) #去掉右边 password3 = password2.strip('.jpg') print('password3:',password3) print(password2.upper()) #转化为大写,登录验证码时用到 print(password2.lower()) #转成小写,登录验证码时用到 print(password2.capitalize()) #把首字母改成大写的 print(password2.count('jpg')) #输出jpg在password2中出现几次 print(password2.replace('12345','上山打老虎')) #把12345替换成“上山打老虎” print(password2.replace('SSSS','替换不存在')) #假设替换的内容不存在,就无结果,不会报错 #布尔类型,要么条件成立,返回True,要么条件不成立,返回False。 filename = 'a.mp3' print(filename.endswith('.mp3')) #返回true 或 false,判断是否已xx结尾 print(filename.startswith('186')) #判断是否以xx开头 if filename.endswith('.mp3'): pass else: print('……') print('{name},{age}'.format(name='hhh',age='22')) #formate 用大括号站位 #一串内容按照某一元素分割 names = '小军,海龙,杨帆,谭爱林' print(names.split(',')) #1、是把字符串变成list, 2、以某个字符串分割,分割之后的是list里面的每一个元素 names2 = '小军 海龙 杨帆 谭爱林' print(names2.split()) print(names2.replace(' ','')) #去除中间空格