一、列表
列表是 python 中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:
li = ['alex', 123, True, (1, 2, 3, 'wusir'), [1, 2, 3, '小明', ], {'name': 'alex'}]
列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据。列表是有序的,有索引值,可切片,方便取值。
索引,切片,步长
li = ['xiao',123,True,(1,2,3,'wusir'),[1,2,3,'小明',],{'name':'xiao'}]print(li[0])print(li[2])print(li[1:4])print(li[:5:2])#倒着取,后2个print(li[-1:-3:-1])
执行输出:
xiao
True
[123, True, (1, 2, 3, ‘wusir’)]
[‘xiao’, True, [1, 2, 3, ‘小明’]]
[{‘name’: ‘xiao’}, [1, 2, 3, ‘小明’]]
下面介绍列表的增、删、改、查
增
append() 追加,在最后一个位置添加元素
li = [1,'a','b',2,3,'a','laonaihai']li.append('xiao')print(li)
执行输出:
[1, ‘a’, ‘b’, 2, 3, ‘a’, ‘laonaihai’, ‘xiao’]
insert() 按照索引添加
将元素插入到指定的索引值位置,后面的元素索引值会自动加 1
li = [1,'a','b',2,3,'a','laonaihai']li.insert(2,'zhang')print(li)
仔细输出:
[1, ‘a’, ‘zhang’, ‘b’, 2, 3, ‘a’, ‘laonaihai’]
extend() 迭代着添加
在最后的位置,迭代每一个元素,依次添加。
li = [1,'a','b',2,3,'a','laonaihai']li.extend('ABC')print(li)
执行输出:
[1, ‘a’, ‘b’, 2, 3, ‘a’, ‘laonaihai’, ‘A’, ‘B’, ‘C’]
使用输入框方式添加元素
name_list = ['张无忌','张敏','胡歌','江疏影']while True:name = input('请输入新员工姓名:Q/q ').strip()if name.upper() == 'Q':breakelse:name_list.append(name)print('已成功添加新员工%s' % name)print(name_list)
删
pop() 按照索引删除
默认删除最后一个
li = [1,'a','b',2,3,'a','laonaihai']li.pop()print(li)
执行输出:
[1, ‘a’, ‘b’, 2, 3, ‘a’]
删除索引值为 1 的元素
li = [1,'a','b',2,3,'a','laonaihai']li.pop(1)print(li)
执行输出:
[1, ‘b’, 2, 3, ‘a’, ‘laonaihai’]
pop() 是增删改查,所有方法里面,唯一有返回值的方法。
返回删除的元素。
pop()只能删除一个元素
remove() 按照元素删除,只能删除一个
li = [1,'a','b','a',2,3,'a','laonaihai']li.remove('a')print(li)
执行输出:
[1, ‘b’, ‘a’, 2, 3, ‘a’, ‘laonaihai’]
clear() 清空列表的所有元素
li = [1,'a','b','a',2,3,'a','laonaihai']li.clear()print(li)
del 删除列表
li = [1,'a','b','a',2,3,'a','laonaihai']del li
切片删除
li = [1,'a','b','a',2,3,'a','laonaihai']del li[:3]print(li)
执行输出:
[‘a’, 2, 3, ‘a’, ‘laonaihai’]
跳着删除
li = [1,'a','b','a',2,3,'a','laonaihai']del li[:3:2]print(li)
执行输出:
[‘a’, ‘a’, 2, 3, ‘a’, ‘laonaihai’]
改
使用赋值修改
按照索引改,是一个整体修改
a 改成 A
li = [1,'a','b','a',2,3,'a','laonaihai']li[1] = 'A'print(li)
执行输出:
[1, ‘A’, ‘b’, ‘a’, 2, 3, ‘a’, ‘laonaihai’]
切片修改
不是整体,而是迭代添加。
li = [1,'a','b','a',2,3,'a','laonaihai']li[:3] = 'aq'print(li)
执行输出:
[‘a’, ‘q’, ‘a’, 2, 3, ‘a’, ‘laonaihai’]
切片,添加一个列表
li = [1,'a','b','a',2,3,'a','laonaihai']li[:3] = [11,22,33,44]print(li)
执行输出:
[11, 22, 33, 44, ‘a’, 2, 3, ‘a’, ‘laonaihai’]
切片修改的执行过程是,先删除切片部分,再迭代添加的对象,依次添加元素。
比如上面的 11,22,33
查
索引,切片,步长,查看方法,和字符串操作是一样的,这里不再举例。
for 循环
li = [1,'a','b','a',2,3,'a','laonaihai']for i in li:print(i)
执行输出:
1
a
b
a
2
3
a
laonaihai
其他操作方法:
li = [1,2,7,8,5,6,3,4]li.sort()print(li)
执行输出:
[1, 2, 3, 4, 5, 6, 7, 8]
从大到小,反向排序
li = [1,2,7,8,5,6,3,4]li.sort(reverse=True)print(li)
其他常用方法
reverse() 翻转
翻转,就是将右边的元素和左边的元素进行对换。
li = [1,2,7,8,5,6,3,4]li.reverse()print(li)
执行输出:
[4, 3, 6, 5, 8, 7, 2, 1]
任何排序都不如 sort 和 reverse 快。
如果没有明确要求指定排序方法,优先使用 sort 和 reverse
len() 查看数据长度
li = [1,2,7,8,5,6,3,4]print(len(li))
count() 统计元素出现次数
li = [1,2,7,8,5,6,3,4]print(li.count(7))
index() 通过元素找索引
li = [1,'a','b','a',2,3,'a','laonaihai']print(li.index('a'))
执行输出:
1
列表的嵌套
li = [1,2,'alex',['100','wusir',99],22]
1.将 alex 变成首字母大写的 Alex
2.将 wusir 变成全部大写的 wusir 放到原处
3.将 99 加 1 变成 100,返回原处
解题答案:
li = [1,2,'alex',['100','wusir',99],22]#首字母大写li[2] = li[2].capitalize()#转换大写li[3][1] = li[3][1].upper()#数值加1li[3][2] += 1print(li)
执行输出:
[1, 2, ‘Alex’, [‘100’, ‘WUSIR’, 100], 22]
