list 列表

本文围绕Python的list列表展开,介绍了列表本质是有序集合,阐述了创建列表的方法,详细讲解了列表元素的访问、操作,如取值、替换、组合、重复等,还介绍了列表的多种方法,包括添加、移除、排序等,最后说明了列表的遍历方式。

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

list 列表

1、列表概述

变量可以存储数据,但是一个变量只能存储一个数据,现在有一个班级,班级有20个人,现在求班级的平均年龄。

若按照之前的方式来解决

age1 = 10
age2 = 12
...
age20 = 12
average = (age1 + age2 +...+age20)/20

在这里,很显然这种方法显得很麻烦,而python提供了一种解决方案,就是使用列表

本质:list列表的本质是一种有序的集合

2、创建列表

语法: 列表名 = [元素1,元素2,元素3…说明:列表中的选项被称为元素,跟string类似,下标也是从0开始计数

使用:创建列表

#创建空列表
list1 = []
#创建带有元素的列表
list2 = [10, 20, 30, 10]
print(list2)

在列表中元素的数据类型可以不同(灵活性)

list3 = [33, "good", True, 10.32]
print(list3)

3、列表元素的访问

3.1 列表的取值

功能:访问list列表中元素值

语法:列表名[索引]

list4 = [22, 33, 12, 32, 45]
#下标从0开始,最大值为len(list4)-1
print(list4[0])

注意:当索引值大于len(list4)-1的时候,会出现以下错误:

print(list4[5])
IndexError: list index out of range

这个错误就是下标越界【下标超出了可表示的范围】

3.2 列表元素的替换

功能:更改列表元素的值

语法:列表名[下标] = 值

list4 = [22, 33, 12, 32, 45]
list4[0] = "hello"
print(list4[0])

4、列表操作

4.1 列表组合

语法: 列表3 = 列表1 + 列表2

list1 = [1, 2, 3]
list2 = ['hello', 'yes', 'no']
list3 = list1 + list2
print(list3)
4.2 列表重复

语法: 列表2 = 列表1 * n

list1 = [1, 2, 3]
list2 = list1 * n
print(list2)
4.3 判断元素是否在列表中

语法:元素 in 列表

若存在则返回True,否则返回False

list1 = [1, 2, 3]
print(1 in list1)
4.4 列表截取

语法:列表[start: end] 表示获取从开始下标到结束下标的所有元素[start, end)

list1 = [1, 2, 3, 'hello', 'yes', 'no']
print(list1[2:4])
#若不指定start,则默认从0开始截取,截取到指定位置
#若不指定end,则从指定位置开始截取,截取到末尾结束
4.5 二维列表

语法:列表 =[列表1,列表2,列表3,… ,列表n]

#创建二维列表,即列表中的元素还是列表
list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]

二维列表取值

语法:列表名【下标1][下标2]

注意:下标1代表第n个列表(下标从0开始),下标2代表第n个列表中的第n个元素

list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
print(list1[0][0])

5、列表的方法

5.1 list.append(元素/列表)

功能:在列表中末尾添加新的元素【在原本的列表中追加元素】

注意:append()中的值可以是列表也可以是普通元素

>>> list1 = [3, 4, 6]
>>> list1.append(6)
>>> print(list1)
[3, 4, 6, 6]
5.2 list.extend(列表)

功能:在列表的末尾一次性追加另外一个列表中的多个值

注意:extend()中的值只能是列表/元组[一个可迭代对象],不能是元素

能够写在for循环后的对象称为可迭代对象

>>> list1 = [1,2,3]
>>> list2 = [3, 4,5]
>>> list1.extend(list2)
>>> print(list1)
[1, 2, 3, 3, 4, 5]
5.3 list.insert(下标值, 元素/列表)

功能:在下标处插入元素,不覆盖原本的数据,原数据向后顺延

注意:插入的数据可以是元素也可以为列表

>>> list1 = [1,2,3]
>>> list1.insert(1,0)
>>> print(list1)
[1, 0, 2, 3]
>>> list1.insert(1,[2, 4, 8])
>>> print(list1)
[1, [2, 4, 8], 0, 2, 3]
5.4 list.pop(下标值)

功能:移除列表中指定下标处的元素(默认移除最后一个元素),并返回移除的数据

>>> list1 = [1, [2, 4, 8], 0, 2, 3]
>>> list1.pop()
3
>>> print(list1)
[1, [2, 4, 8], 0, 2]
>>> list1.pop(2)
0
>>> print(list1)
[1, [2, 4, 8], 2]
5.5 list.remove(元素)

功能:移除列表中的某个元素第一个匹配结果,若找不到,则报错

>>> list1 = [1, 2, 3]
>>> list1.remove(2)
>>> print(list1)
[1, 3]
5.6 list.clear()

功能:清除列表中所有的数据

>>> list1 = [1, 2, 3]
>>> list1.clear()
>>> print(list1)
[]
5.7 list.index(object[, start】[, stop])

功能:从指定的范围的列表中找出某个值第一匹配的索引值

若不指定范围,则默认是整个列表。

>>> list1 = [1, 2, 3]
>>> list1.index(2)
1
>>> list1.index(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 4 is not in list

注意:若在列表中找不到这个元素,则会报错。

5.8 list.count(元素)

功能:查看元素在列表中出现的次数

>>> list1 = [1, 2, 3, 1]
>>> list1.count(1)
2
5.9 len(list)

功能: 获取元素列表个数

>>> list1 = [1, 2, 3, 1]
>>> len(list1)
4
5.10 max(list)

语法:获取列表中的最大值

>>> list1 = [1, 2, 3, 1]
>>> max(list1)
3
5.11 min(list)

语法:获取列表中的最小值

>>> list1 = [1, 2, 3, 1]
>>> min(list1)
1
5.12 list.reverse()

语法: 列表倒叙

>>> list1 = [1, 2, 3, 1]
>>> list1.reverse()
>>> print(list1)
[1, 3, 2, 1]
5.13 list.sort()

语法:列表排序 默认升序

>>> list1 = [1, 2, 3, 1]
>>> list1.sort()
>>> print(list1)
[1, 1, 2, 3]
5.14 list(元组)

功能:将元组转为列表

>>> list1 = list((1, 2, 3, 4))
>>> print(list1)
[1, 2, 3, 4]
5.15 赋值拷贝

语法:list1 = [1, 2, 3]

    list2 = list1
>>> list1 = [1, 2, 3, 1]
>>> list2 = list1
>>> print(list2)
[1, 2, 3, 1]

>>> print(id(list1))
4314476424
>>> print(id(list2))
4314476424

所属同一块内存空间

注意:赋值拷贝为引用拷贝,类似于快捷方式

5.16 浅拷贝

语法:

list1 = [1, 2, 3]
list2 = list1.copy()
>>> list1 = [1, 2, 3, 1]
>>> list2 = list1.copy()
>>> print(list2)
[1, 2, 3, 1]
>>> print(id(list2))
4314525320
>>> print(id(list1))
4314524808
浅拷贝开辟了新的内存空间

赋值拷贝,浅拷贝与深拷贝

赋值拷贝[引用拷贝]
特点:拷贝出来的新的列表与原本列表,他们两个共用同一块内存,
若列表发生变化,则同时进行改变.

list1 = [1,2,3,4,[1,2,3]]
list2 = list1

print(list1)     # 输出结果 [1, 2, 3, 4, [1, 2, 3]]
print(list2)     # 输出结果 [1, 2, 3, 4, [1, 2, 3]]
print(id(list1))  # 输出结果 2329447376520
print(id(list2))  # 输出结果 2329447376520

list2[-1][-1] = 1
print(list2)     # 输出结果 [1, 2, 3, 4, [1, 2, 1]]
print(list1)     # 输出结果 [1, 2, 3, 4, [1, 2, 1]]
print(id(list1))  # 输出结果 2329447376520
print(id(list2))  # 输出结果 2329447376520

list2[-1] = "hello"
print(list2)    # 输出结果 [1, 2, 3, 4, 'hello']
print(list1)    # 输出结果 [1, 2, 3, 4, 'hello']
print(id(list1))  # 输出结果 2329447376520
print(id(list2))  # 输出结果 2329447376520


浅拷贝
特点:对于一维列表,会开辟新的内存空间,拷贝出来的新的列表与原本的列表id并不相同,
但是这仅限于一维列表.这种拷贝方式是一种不完全拷贝.
若出现二维列表,有可能仍然会出现共用内存的情况.

list1 = [1,2,3,4,[1,2,3]]
list3 = list1.copy()

print(list1)  # 输出结果 [1, 2, 3, 4, [1, 2, 3]]
print(list3)  # 输出结果 [1, 2, 3, 4, [1, 2, 3]]
print(id(list1))  # 输出结果 1975663482504
print(id(list3))  # 输出结果 1975663504008



list3[0] = 2
print(list1) # 输出结果 [1, 2, 3, 4, [1, 2, 3]]
print(list3) # 输出结果 [2, 2, 3, 4, [1, 2, 3]]
print(id(list1))  # 输出结果 1975663482504
print(id(list3))  # 输出结果 1975663504008



list3[-1][-1] = "good"
print(list1) # 输出结果 [1, 2, 3, 4, [1, 2, 'good']]
print(list3) # 输出结果 [2, 2, 3, 4, [1, 2, 'good']]
print(id(list1))  # 输出结果 1975663482504
print(id(list3))  # 输出结果 1975663504008

深拷贝
特点:是一种完全拷贝,它重新递归开辟一块新的内存空间,若出现多维列表的情况下,
多维列表的内存也会重新复制一份.新的列表与原列表不会出现共用内存的情况.

list1 = [1,2,3,4,[1,2,3]]
list4 = copy.deepcopy(list1)

print(list1) # 输出结果 [1, 2, 3, 4, [1, 2, 3]]
print(list4) # 输出结果 [1, 2, 3, 4, [1, 2, 3]]
print(id(list1)) # 输出结果 1968912750216
print(id(list4)) # 输出结果 1968912771720


list4[0] = 5
print(list1) # 输出结果 [1, 2, 3, 4, [1, 2, 3]]
print(list4) # 输出结果 [5, 2, 3, 4, [1, 2, 3]]
print(id(list1)) # 输出结果 1968912750216
print(id(list4)) # 输出结果 1968912771720


list4[-1][-1] = "nice"
print(list1) # 输出结果 [1, 2, 3, 4, [1, 2, 3]]
print(list4) # 输出结果 [5, 2, 3, 4, [1, 2, 'nice']]
print(id(list1)) # 输出结果 1968912750216
print(id(list4)) # 输出结果 1968912771720

6、列表的遍历

6.1 使用for循环遍历列表

语法:

for 变量名 in 列表 :

功能:for循环主要用于遍历列表

遍历:指的是依次访问列表中的每一个元素,获取每个下标对应的元素值

说明:按照顺序获取列表中的每个元素,赋值给变量名,再执行语句,如此循环往复,直到取完列表中所有的元素为止

>>> list1 = ['hello', 78, '你好', 'good']
>>> for item in list1:
...     print(item)
... 
hello
78
你好
good
6.2 使用while循环遍历列表[使用下标循环]

语法:

下标 = 0

while 下标 < 列表的长度:

语句

下标 += 1

>>> list1 = ['hello', 78, '你好', 'good']
>>> index = 0
>>> while index < len(list1):
...     print(list1[index])
...     index += 1
... 
hello
78
你好
good
6.3 同时遍历下标与元素

语法:

for 下标,变量 in enumerate(列表)

语句

>>> list1 = ['hello', 78, '你好', 'good']
>>> for index,item in enumerate(list1):
...     print(index, item)
... 
0 hello
1 78
2 你好
3 good
enumerate()[枚举]函数用于一个可遍历的数据对象(如列表,元组或者字符串)组合为一个索引序列,同时列出数据与数据下标,一般使用在for循环中
enumerate(obj, [start =0])
obj:一个可迭代对象
start:下标起始位置

拓展

在python中双冒号的使用:

我们之前学过list1[:]是对list1进行切片,但是若是出现list1[::]

这个有什么作用呢?

#在python中使用list1[::]参数如下[start:end:step]
'''
start:指定开始截取的位置
end:指定截取结束的位置
step:指定步长
'''
list1 = [1,2,3,4,5]
#当step=-1的时候,情况会特殊一点,它可以进行列表的反转
list2 = list1[::-1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值