列表和元组、range
列表
比表基本上可分为增、删、改、插四种方法,具体分析如下;
列表的增加
列表增加元素的方法通过append方法实现,新增加的元素会出现在列表的末尾。比如:
li=['add','dkjfj','nvshen'] li.append('张三') print(li) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py ['add', 'dkjfj', 'nvshen', '张三'] Process finished with exit code 0
人力资源小程序(利用列表增加方法写一个人力资源小程序)
本节课学习到了列表,利用学习到的列表知识做了一个人力资源使用的小程序,主要功能:
- HR可以不断往里面添加人名,同时删除输入过程中的空格
- 如果人名很多,中途想终端,直接敲'q‘(不区分大小写)即可,
- 为防止其他人偷偷输入,设置验证码,当输入正确验证码后,有重新进入添加人名的状态
li=['add','dkjfj','nvshen'] while 1: while 1: username=input('新员工人名:').strip() if username.upper()=='Q': print('先休息一下') break li.append(username) print(li) while 1: l1 = input('验证码:') if l1!='q': print('输入错误,请重新输入') else: break
对代码进行优化
li=['add','dkjfj','nvshen'] while 1: while 1: username=input('新员工人名:').strip() if username.upper()=='Q': print('先休息一下') break else:#和上面的代码相比增加了一个else li.append(username) print(li) while 1: l1 = input('验证码:') if l1!='q': print('输入错误,请重新输入') else: break
列表的插入
列表的插入有insert和extend两种方法,具体说明:
insert是根据索引插入,在索引的后面插入,具体用法
li=['add','dkjfj','nvshen'] li.insert(2,'张三')#插入完成后,张三占据了第二个索引的位置 print(li) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py ['add', 'dkjfj', '张三', 'nvshen'] Process finished with exit code 0
extend是迭代插入,但是注意只有被插入的对象是元素的时候才能迭代,数字不能迭代,注意对比以下结果
li=['add','dkjfj','nvshen'] li.extend('123') print(li) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py ['add', 'dkjfj', 'nvshen', '1', '2', '3'] Process finished with exit code 0
li=['add','dkjfj','nvshen'] li.extend(123) print(li) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py Traceback (most recent call last): File "F:/python/python学习/人工智能/第一阶段day2/练习.py", line 2, in <module> li.extend(123) TypeError: 'int' object is not iterable Process finished with exit code 1
li=['add','dkjfj','nvshen'] li.extend([1,2,3]) print(li) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py ['add', 'dkjfj', 'nvshen', 1, 2, 3] Process finished with exit code 0
列表的删除
列表的删除总共有pop、remove、clear、del四种方法
1、pop: pop是按照索引进行删除
li=['add','dkjfj','nvshen'] li.pop(1)#删除第一个元素 print(li) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py ['add', 'nvshen'] Process finished with exit code 0
li=['add','dkjfj','nvshen'] print(li.pop(1))#注意pop有返回值,就是被删除的那个元素 D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py dkjfj Process finished with exit code 0
li=['add','dkjfj','nvshen'] li.pop()#当pop的索引为空,则默认删除最后一个元素 print(li) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py ['add', 'dkjfj'] Process finished with exit code 0
2、按照元素进行删除
li=['add','dkjfj','nvshen'] li.remove('add') print(li)#注意没有返回值,删除了'add'
3、清空列表
li=['add','dkjfj','nvshen'] li.clear() print(li)#列表中所有的元素均被清空
4、删除列表
li=['add','dkjfj','nvshen'] del.li print(li)#此时列表已经被删除,运行打印后会报错
还有一种切片删除
li=['add','dkjfj','nvshen'] del li[0:1]#此时删除了第一个元素 print(li)
D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py ['dkjfj', 'nvshen'] Process finished with exit code 0
列表的修改
列表的修改有直接修改和切片修改两种方法
1、直接修改
li=['add','dkjfj','nvshen'] li[0]='张三'#直接将第0个元素改成’张三‘ print(li)
2、切片修改
li=['add','dkjfj','nvshen'] li[0:1]='张三' print(li) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py ['张', '三', 'dkjfj', 'nvshen'] Process finished with exit code 0
#相当于将原来第一个元素修改成迭代的’张三‘
li=['add','dkjfj','nvshen'] li[0:1]=['1,2,3'] print(li) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py ['1,2,3', 'dkjfj', 'nvshen'] Process finished with exit code 0
li=['add','dkjfj','nvshen'] li[0:1]=['1,2,3','李四','张三'] print(li) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py ['1,2,3', '李四', '张三', 'dkjfj', 'nvshen'] Process finished with exit code 0
利用列表的切片将列表中的元素变为字符串
colors = ['red','blue','yellow'] a = str(colors)[1:-1] print(a)
结果
'red', 'blue', 'yellow'
列表的查找
列表的查找也有两种方法,一种是for循环,另一种是切片查找
1、for循环
li=['add','dkjfj','nvshen'] for i in li: print(i)
2、切片查找
li=['add','dkjfj','nvshen'] print(li[0:1]) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py ['add'] Process finished with exit code 0
列表的其他公共方法
1、len,查出列表的元素个数
li=['add','dkjfj','nvshen'] print(len(li))#结果显示有三个元素 D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py 3 Process finished with exit code 0
2、count,查找一个列表中一个元素出现几次
li=['add','dkjfj','nvshen'] l1=li.count('add') print(l1)#结果显示'add'出现了一次
3、索引,与字符串不同,列表中只有index没有find
li=['add','dkjfj','nvshen'] l1=li.index('add') print(l1)#结果显示'add'的索引值
li=['add','dkjfj','nvshen'] l1=li.index('add1') print(l1)#没有'add1'这个元素,结果会报错
4、排序,当列表中的元素全为数字时即可对其进行排序
#升序 li=['5','8','3','6','9','2'] li.sort() print(li)
#降序 li=['5','8','3','6','9','2'] li.sort(reverse=True) print(li)
#反转 li=['5','8','3','6','9','2'] li.reverse() print(li) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py ['2', '9', '6', '3', '8', '5'] Process finished with exit code 0
列表的嵌套
#将'taibai'的首字母大写 li=['taibai','武藤兰','苑昊',['alex','egon',89],23] li[0]=li[0].capitalize() print(li)
修改表列表中的元素
#将'昊'改成日天 li=['taibai','武藤兰','苑昊',['alex','egon',89],23] li[2]='苑日天' print(li)
直接等于简单,粗暴,最有效
#将'昊'改成日天 li=['taibai','武藤兰','苑昊',['alex','egon',89],23] li[2]=li[2].replace('昊','日天') print(li)
#将'alex'全部改成大写 li=['taibai','武藤兰','苑昊',['alex','egon',89],23] li[3][0]=li[3][0].upper() print(li)
元组
子元素可以被查询,切片,但是不能修改,孙元素可以修改。
常见的查询,显示所有元素等都能实现,但是不能更改
tu=(1,2,3,5,'axlex',[2,3,5,'taibai'],'afds')#注意列表是中括号,元组是小括号 #'1,2,3,5,'axlex''都是子元素,[2,3,5,'taibai']中的元素都是孙元素 print(tu[3]) print(tu[0:4]) for i in tu: print(i)
可以更改孙元素
tu=(1,2,3,5,'axlex',[2,3,5,'taibai'],'afds')#注意列表是中括号,元组是小括号 #'1,2,3,5,'axlex''都是子元素,[2,3,5,'taibai']中的元素都是孙元素 tu[5][3]=tu[5][3].upper() print(tu)
join
s='ascd' s1='*'.join(s) print(s1)#用*将所有字母链接起来
当对列表使用jion方法的时候,能够将列表转化为字符串。
li=['taibai','武藤兰','苑昊'] l1=''.join(li) print(l1,type(l1))#将所有的元素链接起来 D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py taibai武藤兰苑昊 <class 'str'> Process finished with exit code 0
总结下:join方法能够将列表转化为字符串;split方法能够将字符串转化成列表
range
能够生成一个按照一定顺序排列的列表,但是顾头不顾尾
for i in range(0,10): print(i)#生成0-9的随机数
for i in range(10):#如果以0为起始,0可以省略 print(i)
for i in range(0,10,2):#以2为步长 print(i)
#倒序 for i in range(10,0,-1): print(i)
删除索引为奇数的元素
li=[11,22,33,44,55] for i in range(len(li)): if i%2==1: del li[i] else: pass print(li)