Python List列表详解:创建、操作、方法与遍历

Evan
Evan
发布时间:2026-10-13 | 4人浏览过
原创

本文深入解析Python中的List列表数据类型,涵盖列表的定义、创建方式、元素访问与修改、组合与切片操作。详细讲解append、extend、pop等常用方法,以及浅拷贝与深拷贝的区别。最后介绍for、while及enumerate遍历技巧,帮助开发者掌握高效列表处理技能。

Python List列表概述与创建

本文通过具体实例详细解析Python中的List列表数据类型,旨在为读者提供清晰实用的参考指南。

List列表基础

1. 概述:

此前我们了解到,单个变量仅能存储一个数据值。假设有一个包含20名学生的班级,需要计算他们的平均年龄,该如何处理?

若沿用之前的变量存储方式:

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

显然,上述方法繁琐低效。Python提供了一种更优的解决方案,即使用列表(List),它支持动态添加和删除元素。

本质:List列表本质上是一种有序的集合。

2. 创建列表:

语法格式:列表名 = [元素1,元素2,元素3…] 说明:列表中的各项称为元素,与字符串类似,索引从0开始计数。

使用示例:创建列表


#创建空列表
list1 = []
#创建带有元素的列表
list2 = [10, 20, 30, 10]
print(list2)
list3 = list(range(1,10))
list4 = [i for i in range(10)]
print(list3)
print(list4)

输出结果:

[10, 20, 30, 10] [1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

列表中的元素数据类型可以不同,体现了其灵活性。


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

输出结果:

[33, 'good', True, 10.32]

列表元素的访问与修改

3. 列表元素的访问:

3.1 列表取值:

功能:访问List列表中的元素值。

语法:列表名[索引]


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

输出结果:

22

注意:当索引值大于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])
print(list4)

输出结果:

hello ['hello', 33, 12, 32, 45]

列表的基本操作:组合、重复与截取

4. 列表操作:

4.1 列表组合:

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


list1 = [1, 2, 3]
list2 = ['hello', 'yes', 'no']
list3 = list1 + list2
print(list3)

输出结果:

[1, 2, 3, 'hello', 'yes', 'no']

4.2 列表重复:

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


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

输出结果:

[1, 2, 3, 1, 2, 3]

4.3 判断元素是否存在于列表中:

语法:元素 in 列表

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


list1 = [1, 2, 3]
print(1 in list1)

输出结果:

True

4.4 列表截取:

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


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

输出结果:

[3, 'hello']

二维列表及其取值方法

4.5 二维列表:

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


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

4.5 二维列表取值:

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

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


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

输出结果:

1

列表常用方法详解

5. 列表的方法:

5.1 list.append(元素/列表):

功能:在列表末尾添加新元素(即在原列表中追加元素)。

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


>>> list1 = [3, 4, 6]
>>> list1.append(6)
>>> print(list1)
[3, 4, 6, 6]

5.2 list.extend(列表):

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

注意:extend()中的值只能是列表或元组(即可迭代对象),不能是单个元素。


>>> 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,2,4]
list1.remove(2)
print(list1)

输出结果:

[1, 3, 2, 4]

5.6 list.clear():

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


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

5.7 list.index(元素[, 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)

5.12 list.reverse():

语法:列表倒序排列,直接修改原列表,返回值为None。


>>> 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]


#倒序
list1 = [1, 2,3,2,4]
list1.sort(reverse=False)
print(list1)

输出结果:

[1, 2, 2, 3, 4]

浅拷贝与深拷贝的区别

5.14 浅拷贝:

语法:


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


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

输出结果:

[0, 2, 3, 2, 4]

注意:浅拷贝为引用拷贝,类似于创建快捷方式。

在浅拷贝中,若一个变量发生改变,另一个变量也会相应改变。

5.15 深拷贝:

语法:


list1 = [1, 2, 3]
​list2 = list1.copy()

方式2:


list2 = list1[:]
>>> 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,2,4]
list2 = list1[:]
print(list2)
print(id(list1))
print(id(list2))

输出结果:

[1, 2, 3, 2, 4] 2485711112520 2485710239496

注意:深拷贝为内存拷贝,会开辟新的内存空间。

5.16 list(元组):

功能:将元组转换为列表。


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

列表的遍历技巧

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:下标起始位置

List转dict与切片操作

7、List转dict:


list1=[('a',1),('b',2),('c',3)]
dict1={k:v for k,v in list1}
dict2={v:k for k,v in list1}
print(dict1)
print(dict2)

输出结果:

{'a': 1, 'b': 2, 'c': 3} {1: 'a', 2: 'b', 3: 'c'}

8、切片:

8.1 一个冒号:


list1=['a','b','c','d','e']
print('获取全部:',list1[:])
print('去头去尾:',list1[1:-1])
print('取[2,4)',list1[2:4])

输出结果:

获取全部: ['a', 'b', 'c', 'd', 'e'] 去头去尾: ['b', 'c', 'd'] 取[2,4) ['c', 'd']

冒号后面没有值则默认为list1的长度。

8.2 两个冒号:

冒号后面是步长,切片的步长默认为1,不可为0。


list1=['a','b','c','d','e']
print('获取全部:',list1[::])
print('列表倒置:',list1[::-1])
print('从下标0开始,步长为2',list1[::2])
print('从下标1开始,步长为2',list1[1::2])

输出结果:

获取全部: ['a', 'b', 'c', 'd', 'e'] 列表倒置: ['e', 'd', 'c', 'b', 'a'] 从下标0开始,步长为2 ['a', 'c', 'e'] 从下标1开始,步长为2 ['b', 'd']

常用的是list1[::-1],用于列表倒置。

更多Python相关内容感兴趣的读者可查看本站专题:《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表