Python 07

本文详细介绍了Python列表的各种操作,包括通用操作如列表拼接、复制、元素存在性检查、查找与统计,以及如何修改列表。还探讨了列表方法,如append、insert、extend、clear、pop、remove、reverse和sort。此外,还涵盖了遍历列表和使用range函数的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 07

1 通用操作

1.1 符号 + :将两个列表拼接成一个列表

案例:
lst = [1, 2, 3] + [4, 5, 6]
print(lst)      # 结果为 [1, 2, 3, 4, 5, 6]

运行结果
[1, 2, 3, 4, 5, 6]

1.2 符号 * :列表与整数相乘可以使列表重复指定的次数(即将列表进行复制),但列表与列表不能相乘

案例:
lst = [1, 2, 3] * 2
print(lst)      # 结果为 [1, 2, 3, 1, 2, 3]

运行结果
[1, 2, 3, 1, 2, 3]

1.3 (not)in :检查指定的元素是否(不)存在于指定的列表中,如果(不)在则返回 True, 否则返回 False

案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长']
print('绿巨人' in heros)       # True
print('绿巨人' not in heros)   # False
运行结果
True
False

1.4 min()、max():获取列表中的最小(大)值(ASCII码值)

案例:
lst = [5, 8, 10, 22, 88]
print(max(lst),min(lst))
运行结果
88 5

1.5 方法和函数:方法( y.xxx() )是特殊的函数( xxx() )

1.5.1 方法 lst.index():获取指定元素在列表中的位置
案例1:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长', '绿巨人']
print(heros.index('绿巨人'))
运行结果
1
结论
  • 返回的位置为数字,从左向右依次计数,第一个位置为0,第二个位置为1,以此类推
  • 如果有两个相同的元素,在查找位置时默认查找靠前的那一个
案例2:指定区间查找
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长', '绿巨人', '小朋友']
print(heros.index('绿巨人', 3, 7)) 
运行结果
6
注意:
1.案例中(3,7)为指定区间,在此区间上查找“绿巨人”,编号为6
2.如果查找的元素在列表或指定区间中不存在,则会返回错误,报错内容如下:
  • ValueError: ‘xxx’ is not in list
1.5.2 方法 lst.count():统计指定的元素在列表中出现的次数
案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长', '绿巨人', '小朋友']
print(heros.count('绿巨人'))
分析:“绿巨人”在列表中出现了 2 次,所以返回的结果为 2

2 修改列表

2.1 通过下标索引值修改列表

案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长']
heros[0] = '雷神'
print(heros)
运行结果:
['雷神', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长']

2.2 通过关键字 del 删除元素

案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长']
del heros[2]
print(heros)
运行结果:
['钢铁侠', '绿巨人', '猪猪侠', '蚁人', '美国队长']

2.3 通过切片修改列表

2.3.1 案例1:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长']
heros[0:2] = ['葫芦娃', '黑猫警长']
print(heros) 
运行结果:
['葫芦娃', '黑猫警长', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长']
2.3.2 案例2:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长']
heros[0] = ['葫芦娃', '黑猫警长']
print(heros) 
运行结果:
['葫芦娃', '黑猫警长', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长']
2.3.3 结论:
  • 如果替换的元素个数大于原有的元素个数,多余的元素会依次往后顺延
  • 如果替换的元素个数小于原有的元素个数,原有被切片的元素变成替换的元素
2.3.4 在设置步长的情况下通过切片修改列表
错误案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长']
heros[::2] = ['葫芦娃']
print(heros)
报错内容:ValueError: attempt to assign sequence of size 1 to extended slice of size 3
错误原因:当设置了步长时,序列中的元素个数必须和切片中的元素个数一致时才能修改列表
修正代码:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长']
heros[::2] = ['葫芦娃', '黑猫警长', '黑豹']
print(heros)
运行结果:
['葫芦娃', '绿巨人', '黑猫警长', '猪猪侠', '黑豹', '美国队长']
结论:设置步长修改列表时,在对应位置进行修改
2.3.5 通过切片删除元素
案例1:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长']
del heros[1:3]    # 将切片切出来的元素全部删除
print(heros) 
运行结果:
['钢铁侠', '猪猪侠', '蚁人', '美国队长']
案例2:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '猪猪侠', '蚁人', '美国队长']
heros[1:3] = []    # 将切片切出来的元素列为空
print(heros) 
运行结果:
 ['钢铁侠', '猪猪侠', '蚁人', '美国队长']

注:以上方法只适用于可变序列,不适用于字符串等不可变序列,若对不可变序列使用,则会报错:TypeError: ‘str’ object does not support item assignment,若需要对字符串等不可变序列使用,可以先将不可变序列转换为可变序列,例如通过 list() 将字符串转换为列表,举例如下:

s = 'python'
s = list(s)
s[1] = 'j'
print(s)

运行结果为:

['p', 'j', 't', 'h', 'o', 'n']

3 列表的方法

3.1 添加

3.1.1 案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
heros[3:3] = ['雷神']   # 在列表的最后添加'雷神'
print(heros) 
运行结果:
['钢铁侠', '绿巨人', '蜘蛛侠', '雷神']
3.1.2 错误案例
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
heros[3] = ['雷神']
print(heros)
报错内容:IndexError: list assignment index out of range
错误原因:语句 heros[3] = [‘雷神’] 表示的是将列表中索引值为 3 的项替换为 ‘雷神’,而此列表没有索引值为 3 的项

3.2 方法 lst.append():向列表的最后添加一个元素

案例1:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
heros.append('雷神')
print(heros) 
运行结果:
['钢铁侠', '绿巨人', '蜘蛛侠', '雷神']
案例2:在列表的最后添加一个列表
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
heros.append(['雷神'])
print(heros)
运行结果:
['钢铁侠', '绿巨人', '蜘蛛侠', ['雷神']]
错误案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
heros.append('雷神', '小朋友')
print(heros)

报错内容:TypeError: append() takes exactly one argument (2 given)
错误原因:append 方法只能添加一个元素

3.3 lst.insert(参数1,参数2):向列表指定的位置插入一个元素

参数 1 表示将要插入列表的位置,参数 2 表示要插入的元素

3.3.1 列表中的位置索引值
  • [位置0 元素1,位置1 元素2,位置2 元素3,…]
3.3.2 案例
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
heros.insert(2,'黑寡妇')
print(heros)
运行结果:
['钢铁侠', '绿巨人', '黑寡妇', '蜘蛛侠']

3.4 lst.extend():扩展当前的序列

3.4.1 案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
heros.extend(['黑寡妇', '蚁人'])
print(heros)
运行结果:
 ['钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人']
3.4.2 错误案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
heros.extend(123)
print(heros
报错内容:TypeError: ‘int’ object is not iterable
错误原因:extend() 方法需要一个序列作为参数,会将该序列中的元素添加到当前列表当中,123 (整数类型)不是序列
3.4.3 拓展:lst.extend(t) 等价于 lst += t
案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
heros += ['黑寡妇', '蚁人']
print(heros)
运行结果:
['钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人']

3.5 lst.clear():清空列表

案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
heros.clear()
print(heros) 
运行结果:
[]

注意:此处的结果为空列表[ ]而不是什么都没有,因为输出结果的形式是列表

3.6 lst.pop():根据索引删除元素并返回删除的元素(有返回值,返回值为被删除的元素)

案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
result = heros.pop(2)     # 若不传递索引值则默认删除列表中的最后一个
print(heros)    # 结果为 ['钢铁侠', '绿巨人']
print('result =', result)
运行结果:
['钢铁侠', '绿巨人']
result = 蜘蛛侠

3.7 lst.remove():根据指定值来删除元素

案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
heros.remove('绿巨人')
print(heros)
运行结果:
['钢铁侠', '蜘蛛侠']

3.8 lst.reverse():翻转列表

案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠']
heros.reverse()
print(heros) 
运行结果:
['蜘蛛侠', '绿巨人', '钢铁侠']

3.9 lst.sort():对列表中的元素排序(默认升序)

3.9.1 案例1:
lst = list('hfsjikl')
lst.sort()
print(lst)  
运行结果:
['f', 'h', 'i', 'j', 'k', 'l', 's']

3.9.2 案例2:通过将列表翻转来实现降序
lst = list('hfsjikl')
lst.sort(reverse=True)      # 通过将列表翻转来实现降序排列
print(lst)
运行结果:
['s', 'l', 'k', 'j', 'i', 'h', 'f']

4 遍历列表:将列表中的元素提取出来

案例:遍历以下列表

heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇']
4.1 方法一:初始方法
print(heros[0])
print(heros[1])
print(heros[2])
print(heros[3])
4.2 方法二:通过 while 循环
i = 0
while i < len(heros):
    print(heros[i])
    i += 1
4.3 方法三:通过 for 循环遍历
4.3.1 for 循环语法
for 变量 in 序列(遍历的规则):
    代码块
4.3.2 使用 for 循环遍历的好处
  • for 循环的代码会执行多次,序列中有几个元素就会执行几次,每执行一次会将序列中的元素赋值给变量
4.3.3 案例:
heros = ['钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇']
for h in heros:
    print(h)
运行结果:
钢铁侠
绿巨人
蜘蛛侠
黑寡妇

5 range() 函数

5.1 range() 函数的语法及相关变量含义

  • range(start,stop,step)
  • start - 开始 默认是从 0 开始,例如 range(5) 等价于 range(0,5)
  • stop - 结束 不包括结束(开区间),例如 range(0,5) 的结果是 [0, 1, 2, 3, 4] 没有 5
  • step - 步长 默认为 1,例如 range(5) 等价于 range(0,5) 等价于 range(0,5,1)

5.2 简单案例汇总

print(range(5))
print(range(0, 5)) 
print(range(0, 5, 1))
print(list(range(0, 5)))
print(type(range(0, 5))) 
运行结果:
range(0, 5)
range(0, 5)
range(0, 5)
[0, 1, 2, 3, 4]
<class 'range'>

5.3 range() 函数的作用

  • 方便地确定 for 循环的次数(range 中传递的数字即为 for 循环执行的次数)

5.4 range() 函数的应用

5.4.1 案例1:输出 0 到 9 之间的奇数
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(0, 9, 2):
    print(lst[i])
运行结果:
1
3
5
7
9
5.4.2 案例2:输出 100 以内能被 3 整除的数
方法一:
for i in range(1, 101):
    if i % 3 == 0:
        print(i)
运行结果:
3
6
9
12
15
18
21
24
27
30
33
36
39
42
45
48
51
54
57
60
63
66
69
72
75
78
81
84
87
90
93
96
99
方法二:
print(list(range(3, 101, 3)))

注意:range(a,b)中的区间 (a,b) 是一个左开右闭区间,即 a 的值可以取到,但 b 的值取不到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值