5、python_list(列表)


列表是python的基础数据类型之一,是以[]括起来,每个元素用','隔开。可以存放各种数据类型,列表相对于字符串,不仅可以存放不同的数据类型,还可以存放大量的数据,列表是有序的,有索引,可以切片以便于取值。

列表的常用操作:

1、列表的增删改查以及遍历(列表是一个可迭代的对象,所以可以使用for循环)
2、列表的嵌套

1、遍历列表

lst = ["舒克贝塔","黑猫警长","哪吒","葫芦娃"]
for el in lst:
  print(el)

2、列表的索引和切片

索引

lst = ["张无忌","周芷若","杨逍","谢逊","赵敏"]
print(lst[0]) #张无忌
print(lst[2]) #杨逍
print(lst[3]) #谢逊
lst[3] = "灭绝师太" #将谢逊替换为灭绝师太
print(lst) #['张无忌', '周芷若', '杨逍', '灭绝师太', '赵敏']

切片

lst = ["张无忌","周芷若","杨逍","谢逊","赵敏"]
print(lst[0:3]) #['张无忌', '周芷若', '杨逍']
print(lst[:4]) #['张无忌', '周芷若', '杨逍', '谢逊']
print(lst[1::2]) #['周芷若', '谢逊']
print(lst[2::-1]) #['杨逍', '周芷若', '张无忌']
print(lst[-1:-3:-2]) #['赵敏']

3、列表的增删改查

增(append、insert、extend)

lst = ["周润发","周杰伦","刘德华","郭富城","张学友"]
print(lst) #['周润发', '周杰伦', '刘德华', '郭富城', '张学友']
lst.append("黎明") #append是默认附加至列表的尾部
print(lst) #['周润发', '周杰伦', '刘德华', '郭富城', '张学友', '黎明']

例如:

lst = []
while True:
content = input("请输入你要录入的员工信息,输入Q退出: ")
if content.upper() == "Q":
break
lst.append(content)
print(lst)
lst = ["周润发","周杰伦","刘德华","郭富城","张学友"]
lst.insert(3,"周星驰") #在郭富城的前面插入周星驰
print(lst) #['周润发', '周杰伦', '刘德华', '周星驰', '郭富城', '张学友']

lst = ["周润发", "周杰伦", "刘德华", "郭富城", "张学友"]
lst.extend(["黎志", "大华"]) #迭代添加
print(lst) #['周润发', '周杰伦', '刘德华', '郭富城', '张学友', '黎志', '大华']

删(pop、remove、clear、del)

#pop

lst = ["周润发","周杰伦","刘德华","郭富城","张学友"]
print(lst) #['周润发', '周杰伦', '刘德华', '郭富城', '张学友']
deleted = lst.pop() #删除最后一个
print ("被删除的",deleted) #被删除的 张学友
print(lst) #['周润发', '周杰伦', '刘德华', '郭富城']

el = lst.pop(2) #将lst中的刘德华删除
print(lst) #['周润发', '周杰伦', '郭富城']

lst.remove("周润发") #指定元素删除
print(lst) #['周杰伦', '刘德华', '郭富城', '张学友']

lst.remove("haha") #删除不存在的元素会报错
print(lst) #ValueError: list.remove(x): x not in list
lst.clear() #清空列表
print(lst) #[]

del lst[1:3] #切片删除(顾前不顾后,删除不到3的位置)将列表中的周杰伦和刘德华删除
print(lst) #['周润发', '郭富城', '张学友']

#索引切片修改

lst = ["周润发","周杰伦","刘德华","郭富城","张学友"]
lst[1] = "东风破" #将周杰伦替换为东风破
print(lst) #['周润发', '东风破', '刘德华', '郭富城', '张学友']


#列表是一个可迭代的对象,所以可以使用for循环

lst = ["周润发","周杰伦","刘德华","郭富城","张学友"]
for el in lst:
print(el)


其他操作

lst = ["周润发", "周杰伦", "刘德华", "郭富城", "张学友"]
print(len(lst)) #len是计算长度,同样适用字符串、列表、字典、元组



lst = ["周润发", "周杰伦", "刘德华", "郭富城", "张学友","周润发"]
C = lst.count("周润发") #count是查询所查字符出现的次数
print(C) #2

lst = [1,3,5,2,4,8,11,7,55,23]
lst.sort() #sort是排序,默认升序
print(lst) #[1, 2, 3, 4, 5, 7, 8, 11, 23, 55]
lst.sort(reverse=True) #降序
print(lst) #[55, 23, 11, 8, 7, 5, 4, 3, 2, 1]

列表的嵌套

lst = [1,"太白","太黑",["可怜",["太可怜"],"王建玲"]]
#找到太黑
print(lst[2])
lst = [1, "太白", "太黑", ["可怜", ["太可怜"], "wangjianling"]]
#找到wangjianling然后将首字母改为大写
lst[3][2]=lst[3][2].capitalize() #将首字母转换为大写
print(lst) #[1, '太白', '太黑', ['可怜', ['太可怜'],'Wangjianling']]
#将太白换为太黄
lst[1]=lst[1].replace("""") #将白替换为黄
print(lst) #[1, '太黄', '太黑', ['可怜', ['太可怜'], 'Wangjianling']]
  •  列表的函数&方法
len(list)               列表长度
list.append(obj)        在列表末尾添加新的对象,相当于其它语言里的push
list.count(obj)         统计某个元素在列表中出现的次数
list.extend(seq)        在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)         从列表中找出某个值第一个匹配项的索引位置,索引从0开始
list.insert(index, obj) 将对象插入列表
list.pop(obj=list[-1])  移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)        移除列表中某个值的第一个匹配项
list.reverse()          反向列表中元素,倒转
list.sort([func])       对原列表进行排序
  •  循环删除列表中的每一个元素
s = [11, 22, 33, 44]
for e in s:
    s.remove(e)
print(s)     #结果显示:[22, 44]   没有达到要求

原因分析:for的运行过程. 会有?个指针来记录当前循环的元素是哪?个, 一开始这个指针指向第0个. 然后获取到第0个元素. 紧接着删除第0个. 这个时候. 原来是第一个的元素会自动的变成第0个. 然后指针向后移动一次, 指向1元素. 这时原来的1已经变成了0, 也就不会被删除了.(列表在循环中不可以删除,因为会改变索引

s = [11, 22, 33, 44]
for i in range(0, len(s)):
    s.pop()
print(s)    #结果显示:[]