1、list的操作
1.1、list的常用方式
查看元素是否在list里,有两种方法:一种是最原始的实现原理,另一种是用list方法,下面介绍:
方法一:【最原始的方法】
passwords = ['123456','123123','7891234','password']
count = 0
while count < len(passwords):
s = passwords[count]
print('每次循环的元素:',s)
count += 1
方法二、用list:
passwords = ['123456','123123','7891234','password']
for p in passwords:
print('每次循环的元素:',p)
实现同一样方法,应该选择使用最少的代码
同样,如果想获取list里的key/value,还可以选择使用下面常用的方法:enumerate自动的将每次循环都会自动计算下标以及对应的元素
passwords = ['123456','123123','7891234','password']
for index,p in enumerate(passwords): #enumerate是一个枚举函数
print('enumerate每次循环的时候:',index,p)
print(passwords)
1.2、list的切片操作,切片是对list的一种取值方式
①、两个例子说明
l=['a','b','c','d','e','f','g','h','i','j']
print(l[0:4]) #取a~d时候。切片操作顾头不顾尾的。
print(l[2:8])
print(l[:5]) #如果:前面不写,代表从0开始取得,等同于 l[0:5]
print(l[2:]) #如果:后面不写,代表取到最后一个元素,等同于l[2:9]
print(l[0:8:2]) #最后一个数叫做步长,就是每2个步长取一次。
print(l[::3]) #对于整个list,每3个步长取一次
如果最后面的步长是正数的话,那就从左到右开始取值;如果最后面的步长是负数的话,那就从右往左开始取值
num = list(range(1,101))
print(num[1::2]) #取偶数
print(num[::2]) #取奇数
print(num[::-2]) #倒着取偶数
PS:切片同样适用于字符串。回文算法:正过来,反过来都是一样的。例如:'上海自来水来自海上',校验是否是回文算法,代码如下:
for i in range(3):
m = input('请输入字符串:')
if len(m) >1:
if m == m[::-1]:
print('是回文')
else:
print('不是回文')
else:
print('输入长度至少大于1')
2、list的增删改查
增:stu_name = ['cuicui','yangyang','liuxin','lrr','xiaoli'],适用于以下的增删改查:
stu_name.append('李大头') #list里面添加元素,默认在最后一个位置(末尾)添加。
stu_name.insert(2,'小王') #指定位置的添加元素
stu_name.insert(2,'老王') #指定位置的添加元素
stu_name.insert(7,'老王') #指定位置的添加元素,可以多次添加同一个元素,一次只能添加一个元素。
删:
stu_name.pop() # 删除元素,默认删除最后一个。
stu_name.pop('99') #指定一个不存在的下标时候:会报错:'str' object cannot be interpreted as an integer
stu_name.pop(4) # 删除元素,指定下标删除
stu_name.remove('小王') # 删除元素,指定元素删除,只能一个一个的删除。
stu_name.remove('老王') # 删除元素,指定元素删除,如果存在两个一样的元素,默认先小下标删除
del stu_name[-1] #删除最后一个。
del stu_name[-2] #删除倒数第二个。 #下标为正,从前面数,下标为负数,倒数。
改:
stu_name[6]='小头爸爸'
查:
print(stu_name[0]) #指定下标来取值
print(stu_name[-1])
list的一些其他常用方法:
my_list = ['小黑','小白',1,1,2,1.5]
print(my_list.count(1))
print(my_list.count(5)) #判断有没有重复时候
print('index方法1:',my_list.index(1)) #查找元素的下标,有重复的元素,默认返回第一个下标。
print('index方法2:',my_list.index(99)) #查找元素的下标,当元素不存在时候,报错:ValueError: 99 is not in list
my_list.reverse() #该方法无返回值。
print('reverse方法:',my_list) #list里元素反转。
my_list.clear() #清空list里元素。
my_list=[9,9.2,4,77,1,22,3,1]
my_list1 = ['小黑','小白',1,1,2,1.5]
my_list.sort() #sort只针对同种类型数据排序。从小到大。
my_list.reverse() #可以在sort()后用,相当于从大到小
my_list.sort(reverse=True) #从大到小排序
new_list = my_list + my_list1 #这是两个list合并,但不会更新这两个list。
new_list = my_list * 3 #生成了一个复制3遍的list。
my_list.extend(my_list1) #把一个list里元素加入进去。相当于合并了两个list,改变了my_list
3、字典的介绍与使用
字典:天生去重,查询速度快,key与value成对出现,无序的。举例:适用于下面字典的增删改查
xiaojun = {
'name':'xiaojun',
'sex':'男',
'shengao':180,
'age':19,
'email':'fad@qq.com',
'addr':'火星',
'id':1,
}
增:
xiaojun['zhuzhi'] = '洛杉矶' #给字典新增一个key
xiaojun['addr'] = '洛杉矶' #给字典新增一个key,如果已经存在,就会覆盖
stu.setdefault('name','杨洋')
stu.setdefault('age',18) #添加,如果key不存在,age的值就是18,
# 如果key存在,就保留原始的值。
删:
xiaojun.pop('id') #必须指定对应的key,否则报错。
xiaojun.clear() #清空字典
xiaojun.popitem() #随机删除某一个k,很少使用
del xiaojun['age'] #删除指定的key
改:
stu['name']='hailong'
查:
print(xiaojun['sex'])
print(xiaojun['住址']) #key不存在会报错,为避免报错
print(xiaojun.get('sex')) #如果key存在,就返回对应的值
print(xiaojun.get('住址')) #如果key不存在,就返回None
print(xiaojun.get('住址','日本'))
# #如果key不存在,我们也可以手动设置默认值,就返回默认值
print(xiaojun.values()) #返回一个list
print(xiaojun.keys()) #返回一个list
字典的使用:
all_stus = {
'xiaojun':{
'name':'xiaojun',
'sex':'男',
'shengao':180,
'age':19,
'email':'fad@qq.com',
'addr':'火星',
'id':1,
},
'xiaowang': {
'name': 'xiaowang',
'sex': '男',
'shengao': 180,
'age': 19,
'email': 'fad@qq.com',
'addr': '火星',
'id': 2,
'cars':['五菱宏光','劳斯拉斯','法拉第','宝马']
},
'xiaoli': {
'name': 'xiaoli',
'sex': '男',
'shengao': 180,
'age': 19,
'email': 'fad@qq.com',
'addr': '火星',
'id': 3,
'bags':{
'qianbao':['lv','ysl'],
'beibao':['coach','abc']
}
}
}
# 查到lv包
print(all_stus['xiaoli']['bags']['qianbao'][0])
#车里插入一个奥迪
all_stus['xiaowang']['cars'].append('奥迪')
print(all_stus['xiaowang']['cars'])
#删除coach
del all_stus['xiaoli']['bags']['beibao'][0]
print(all_stus['xiaoli']['bags']['beibao'])
4、字符串的常用的一些方法
字符串与元祖不能修改
所以这里介绍字符串的常用方法
passwords = ' aAbbD123456.jpg\n '
print('passwords:',passwords)
print(passwords.lstrip()) #字符串左边去掉空格与换行符
print(passwords.rstrip()) #字符串右边去掉空格与换行符
print(passwords.strip()) #去掉字符串两边的空格与换行符,中间的换行符是去不掉的。
print(passwords.strip('.jpg')) #去掉字符串两边的指定的字符,但是并不修改字符串本身的值。
passwords = 'aAbbD123456.jpg\n '
print(passwords.upper()) #将字符串改为全大写。
print(passwords.lower()) #将字符串改为全小写。
print(passwords.capitalize()) #首字母大写
print(passwords.count('Addb')) #某元素在字符串里出现了多少次
print(passwords.replace('12345','上山打老虎')) #用新的字符串替换老的字符串
print(passwords.replace('大头','上山打老虎')) #如果old不存在,返回原字符串
filename = 'a.mp4'
#上传文件时候,常常校验文件名以什么结尾
print(filename.endswith('.mp3')) #以。。结尾
phone = '18612346789'
print(phone.startswith('186')) #以什么开头
names = 'zhangyixing,wuyifan,yangyang,liyifeng'
print(list(names))
print(names.split(',')) #1、将字符串转换为list,
# 2、按照逗号分隔,分隔之后放到list里
#.join()方法。join方法不仅仅能够连接list里的元素,只要是能够循环的元素都可以用join方法。
#作用:1、把list变成了字符串,
# 2、把list里的每一个元素用逗号连接起来
s = 'abcdef'
users = ['username','user3','user2']
res = ','.join(users) #将list里的元素用,连接
res = '?'.join(users) #将list里的元素用?连接
res = '?'.join(s) #将字符串里的元素用?连接
#s.find() 与s.index()
#都是找元素的下标的,先分别用它们找存在的元素,再走下不存在的元素
s = 'abcdef'
print(s.find('f'))#二者找存在的元素是一样的返回结果,返回下标。
print(s.index('f'))
print(s.find('m')) #二者找不存在的元素时候,find(x)会返回-1,而index(x)会报错
print(s.index('m'))
print(s.isdigit()) #判断是否为正整数,包括0
print('123'.isdigit()) #判断是否为正整数,包括0
print('0'.isdigit()) #判断是否为正整数,包括0
print('12.3'.isdigit()) #判断是否为正整数,包括0
print(s.islower()) #判断是否都是小写字母
print(s.isupper()) #判断是否都是大写字母
print('Abc'.islower())
print('abc123'.isalnum()) #判断字符串里面有英文或者数字
print('abc123'.isalpha()) #字符串里只能有字母,都是字母才返回true
print('\n'.isspace()) #判断是否是空格与换行符
#目前字符串里没有判断是否是小数的方法。
print('3aa'.isidentifier()) #判断是否是合法的变量名。
print('_aa'.isidentifier()) #判断是否是合法的变量名。
import string
print(string.ascii_letters) #所有大小写字母
print(string.ascii_lowercase) #所有小写字母
print(string.ascii_uppercase) #所有大写字母
print(string.punctuation) #特殊字符
print(string.digits) #所有的数字