文章目录
1. 列表的通用操作
1.1 列表相加
lst=[1,2,3]+[4,5,6]
print(lst)
结果是拼接成一个列表
lst=[1,2,3,4,5,6]
1.2 列表相乘
- 列表与列表是不能相乘的,结果会报错
- 列表可以和整数相乘,结果是将列表重复指定的次数
1.3 in 与not in检查元素是否在列表中
- in 用来检测元素是否在列表中,在则返回True,不在则返回False
- not in 用来检测元素是否不在列表中,不在返回True,在则返回False
1.4 max()与min()获取列表中元素的最大值与最小值
1.5 在python文档中查看list的其他操作
打开Python文档
找到图书馆
找到类型
可以看到我们学过的知识点
1.6 lst.index()方法获取列表中的索引位置
下面我们用一个实例来看它的用法。
heros =['钢铁侠', '蜘蛛侠','猪猪侠','孙悟空', '猪八戒','沙和尚','绿巨人']
print(heros.index('猪猪侠'))
结果可以看到,它的索引位置是2
如果列表中有两个或者多个相同元素,获取的将是第一个元素的索引位置。
如果需要后面的元素,可以指定一个起始位置。
如:
heros =['钢铁侠','蜘蛛侠','猪猪侠','孙悟空', '猪八戒','沙和尚','绿巨人','蜘蛛侠']
print(heros.index('蜘蛛侠',2))
当然也可以加入结束位置
heros =['钢铁侠','蜘蛛侠','猪猪侠','孙悟空', '猪八戒','沙和尚','绿巨人','蜘蛛侠','泰山']
print(heros.index('蜘蛛侠',2,8))
总结:index()函数第一个参数是列表名,第二个参数是起始位置,第三个参数是结束位置。当然,如果没必要,后面的两个参数可以不写。
1.6 lst.count()统计指定元素在列表中出现的次数
heros =['钢铁侠','蜘蛛侠','猪猪侠','孙悟空', '猪八戒','沙和尚','绿巨人','蜘蛛侠','泰山']
print(heros.count('蜘蛛侠'))
如果找的元素在列表中没有,结果返回0 。
如果一个列表无线延长,可以估计一个位置来查找。
列表的优点是存储数据方便,缺点是查找元素不方便,后面字典可以解决这个问题。
2. 修改列表
2.1 通过下标索引值来修改列表
heros =['钢铁侠','蜘蛛侠','猪猪侠','孙悟空', '猪八戒','沙和尚','绿巨人','蜘蛛侠','泰山']
假如我想把列表里的“钢铁侠”改成“雷神”,直接这样:
heiros[0]='雷神'
2.2 通过del删除列表元素
例题:
heros =['钢铁侠','蜘蛛侠','猪猪侠','孙悟空', '猪八戒','沙和尚','绿巨人','蜘蛛侠','泰山']
print('修改前',heros)
del heros[1]
print('修改后',heros)
2.3 通过切片来修改列表
例题:
heros =['钢铁侠','蜘蛛侠','猪猪侠','孙悟空', '猪八戒','沙和尚','绿巨人','蜘蛛侠','泰山']
print('修改前',heros)
heros[0:2]=['葫芦娃','黑猫警长']
print('修改后',heros)
如果添加的元素大于切去的元素,那么多出来的元素会依次往后顺延。
如果添加的元素小于切去的元素,那么原来被切的所有元素被添加的元素替代。
也可以加上步长来切片替换,当设置了步长,序列中的元素必须和你切片中的元素保持一致:
我们可以看到对应的元素被取代了,如果数目不一致就会报错。
也可以通过切片来删除列表中的元素:
例如:我要删除下面列表中的“孙悟空”和“猪八戒”
heros =['钢铁侠','蜘蛛侠','猪猪侠','孙悟空', '猪八戒','沙和尚','绿巨人','蜘蛛侠','泰山']
heros[3:5]=[]
print('heros')
结果:
当然你可以用del删除也是可以的。
上述的操作都是针对可变序列的,不可变序列是不适用的。如字符串。
如:
s='python'
s[1]='j'
print(s)
结果就报错了,如果想修改,可以把不可变序列转换成可变序列
如:
s='python'
s=list(s)
s[1]='j'
print(s)
结果
在刚才打开的python文档中往下拉可以看到修改列表的方法
2.4 利用切片的方法来插入元素
我们在下面的列表:
heros=['葫芦娃','黑豹','灭霸']
在“灭霸”前面插入一个元素“金刚”
heros=['葫芦娃','黑豹','灭霸']
heros[2:2]=['金刚']
结果
如果索引值超出列表中元素的个数呢?
2.5 append方法向列表的最后添加一个元素
例如:
heros=['葫芦娃','黑豹','灭霸']
heros.append('金刚')
print(heros)
结果
2.6 用insert()方法在列表中插入一个元素
例题:
heros=['葫芦娃','黑豹','灭霸']
heros.insert(2,'黑寡妇')
print('heros')
结果
2.7 用extend()方法扩展当前序列
extend() 方法需要一个序列作为参数,会将序列中的元素添加到当前的列表当中
例题:
heros=['葫芦娃','黑豹','灭霸']
heros.extend(['猪八戒','孙悟空'])
print(heros)
结果
或者:
heros=['葫芦娃','黑豹','灭霸']
heros+=['猪八戒','孙悟空']
print(heros)
结果
2.8 list.clear()情况列表
例题:
heros=['葫芦娃','黑豹','灭霸']
heros.clear()
print(heros)
结果
2.9 list.pop()根据索引值删除元素并返回删除的元素
这个方法是有返回值的
例题:
heros=['葫芦娃','黑豹','灭霸']
heros.pop(2)
print(heros)
result=heros.pop(0)
print(result)
结果
不传递参数的时候,默认删除最后一个元素
2.10 remove()根据指定值来删除元素
例题:
heros=['葫芦娃','黑豹','灭霸']
heros.remove('黑豹')
print(heros)
结果
2.11 reverse()方法对列表的元素进行反转排序
heros=['葫芦娃','黑豹','灭霸']
heros.reverse()
print(heros)
结果
2.12 sort()方法进行排序
括号里面可以传参sort(reverse=True)代表降序
例题
num=[1,2,3,4,5,6,7]
num.sort(reverse=True)
print(num)
结果
3.0 遍历列表
指的就是将列表中的元素提取出来
3.1 原始方法
num=[1,2,3]
print(num[0])
print(num[1])
print(num[2])
结果
原始方法显然比较麻烦
3.2 用while循环遍历
例题
i=0
heros = ['钢铁侠', '蜘蛛侠', '猪猪侠', '孙悟空', '猪八戒', '沙和尚', '绿巨人', '蜘蛛侠', '泰山']
while i < len(heros):
print(heros[i])
i+=1
结果
3.3 用for循环遍历列表
语法:
list=[1,2,3,4]
for i in list:
print(i)
每循环一次,将序列中的元素赋值给变量i,i也可以换成其他的字母。列表中有几个元素就会循环几次。
3.4 range()函数
print(range(5))
print(range(0,5))
print(range(2,5))
print(range(0,10,2)
结果
返回的就是range类的结果
改一下
print(list(range(10)))
print(list(range(0,10)))
print(list(range(0,10,2)))
总结:
- range函数默认从0开始
- range函数不包括结束数
- range函数的步长默认为1
for 循环搭配range函数非常好用
range()中传递的是几,就执行几遍循环。
例题:
for i in range(10):
print('I love you!')
瞬间把一句话打印了10遍
例题:找100内能够被3整除的数
for i in range(1,101):
if i%3==0:
print(i)
结果
3.5 列表推导式
# 列表推导式一
list_b = [b for b in range(5)]
print(list_b)
结果
[0, 1, 2, 3, 4]
# 列表推导式二: in后面跟其他可迭代对象,如字符串
list_c = [7 * c for c in "python"]
print(list_c)
结果
['ppppppp', 'yyyyyyy', 'ttttttt', 'hhhhhhh', 'ooooooo', 'nnnnnnn']
# 带if条件语句的列表推导式
list_d = [d for d in range(6) if d % 2 != 0]
print(list_d)
结果
[1, 3, 5]
# 多个for循环
list_e = [(e, f * f) for e in range(3) for f in range(5, 15, 5)]
print(list_e)
结果
[(0, 25), (0, 100), (1, 25), (1, 100), (2, 25), (2, 100)]
# 嵌套列表推导式,多个并列条件
list_g = [[x for x in range(g - 3, g)] for g in range(22) if g % 3 == 0 and g != 0]
print(list_g)
结果
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 20]]
4. 作业
4.1 写博客梳理知识点
4.2 课堂代码敲3遍
推荐书目:《Python全国计算机等级二级考试》
4.3 课堂作业
4.3.1
列表a=[1,2,3,4,5,6]不通过函数的方式实现列表反转([6,5,4,3,2,1])
答案:
a=[1,2,3,4,5,6]
lst=a[::-1]
print(lst)
结果
推导:第一个冒号是切片取所有值,第二个冒号是设置步长,步长为-1时,从后往前依次取值。
4.3.2
猜数字0-10,给用户9次机会,让他怎么也猜不对
答案
lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(9):
a = int(input('请输入一个0到9的数字'))
if a in lst:
print('对不起你输入错误')
lst.remove(a)
print(f'答案是{lst}')
4.3.3
两个列表a=[11,22,23],b=[22,23,24]获取列表中相同的元素。
答案:
a=[11,22,23]
b=[22,23,24]
lst=[]
for i in a:
if i in b:
lst.append(i)
print(lst)