列表下(列表的常用操作,列表推导式)2020-11-9

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)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_46738467/article/details/109570496