Python列表基础操作详解:访问、修改、添加、删除元素入门指南
目录
一、何为列表
列表由一系列按特定顺序排列的元素组成,其中的元素之间可以没有任何关系。
列表通常包含多个元素,因此需要给列表指定一个表示复数的名称,例如:names
、letters
、digits
等。
在 Python 中用方括号[]
表示列表,并用逗号分隔其中的元素。
names=['xiaoming','zhangsan','lisi','xiaoli']
print(names)
按照上述方式将列表打印出来,Python 将打印列表的内部表示,同时也包括方括号。
如果想要访问列表的元素那该怎么办呢?
二、访问列表元素
1. 元素索引
1.1 什么是索引(index)
在 Python 中,索引就是用来定位某个元素在序列(比如列表、字符串、元组)中的“位置编号”。
你可以把序列想象成一排格子,每个格子里装着一个元素,而每个格子都有自己的编号。这些编号就是索引。
列表是有序集合,因此要访问列表中的任意元素,需要将该元素的索引告诉 Python,要访问列表元素,要先指出列表的名称,再指出元素的索引,并将索引放在方括号[]
内。当你请求访问获取列表元素时,Python 只返回元素,并不包括方括号。
1.2 正数索引(从左往右数)
需要注意的是在 Python 中,第一个列表元素的索引是从 0 不是 1。其实大多数编程语言都是这样规定的,这与列表操作的底层实现有关
names=['xiaoming','zhangsan','lisi','xiaoli']
print(names[0])
print(names[1])
当然也可以用方法改变元素的输出格式。
names=['xiaoming','zhangsan','lisi','xiaoli']
print(names[0].title())
print(names[1].title())
1.3 负数索引(从左往右数)
Python 中用特殊的语法来访问列表的最后一个元素,这种语法就是负数索引。
通过将索引指定为 -1,可让 Python 返回最后一个元素;索引 -2 返回倒数第二个元素;索引 -3 返回倒数第三个元素,以此类推,以倒序的方式访问列表元素。
names=['xiaoming','zhangsan','lisi','xiaoli']
print(names[-1])
print(names[-2])
print(names[-3])
print(names[-4])
这种负数索引规定为访问列表元素带来的极大的帮助,因为你可能经常需要在不知道列表长度的情况下访问列表的最后一个元素。
对比:
一般什么时候使用正数索引或负数索引呢?
1.4 索引不能越界
Python 中的列表是一种 有序、可变的元素集合,我们可以通过索引来访问其中的元素:
fruits = ['apple', 'banana', 'cherry']
print(fruits[0]) # apple
print(fruits[1]) # banana
print(fruits[2]) # cherry
按照正数索引,Python 的列表索引是 从 0 开始 的。这意味着:
list[0]
list[1]
list[2]
但如果你尝试访问一个 不存在的索引,Python 就会抛出错误:
print(fruits[3]) # IndexError: list index out of range
因为 fruits
只有 3 个元素(下标为 0、1、2),索引 3 不存在,导致报错。
同样,按照负数索引访问列表的元素,越界也会报错,示例如下:
lst = [10, 20, 30]
# 合法访问
lst[-1] # 30
lst[-2] # 20
lst[-3] # 10
# 越界
lst[-4] # IndexError
1.4.1 常见的导制索引越界的情况
忘记查看列表:
lst = [1, 2, 3]
for i in range(4): # 错误:范围超出了长度
print(lst[i]) # 当 i=3 时出错
使用动态计算的索引:
lst = [10, 20]
index = int(input("请输入索引: "))
print(lst[index]) # 如果用户输入超过1的值就会报错,就会报错(以正数索引为例)
使用 while
循环错误:
lst = [1, 2, 3]
i = 0
while True:
print(lst[i]) # 没有退出条件,最终 i 会超出范围
i += 1
1.4.2 如何防止索引越界
比较常用的方法是使用 len()
判断
if index < len(lst):
print(lst[index])
else:
print("索引超出范围")
2. 使用列表中的元素创建消息
可以使用f字符串根据列表中的值来创建消息。
names=['xiaoming','zhangsan','lisi','xiaoli']
message=f"{names[0].title()} is my friend."
print(message)
三、修改、添加和删除元素
1. 修改列表元素
修改列表元素与访问列表元素的语法类似,要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值,其他元素的值不变。
motorcycles = ['honda','yamaha','suzuki']
print(motorcycles)
motorcycles[0] = 'ducati'
print(motorcycles)
可以修改任何元素的值,不单单只能改变一个元素的值。
2. 在列表中添加元素
2.1 在列表末尾添加元素
在列表中添加新元素时,最简单的方式就是将元素附加带列表。给列表附加元素时,元素将添加到列表的末尾。
在这里用方法 append()
将新的元素添加到列表末尾,并且不影响列表中其他所有元素的值。
motorcycles = ['honda','yamaha','suzuki']
print(motorcycles)
motorcycles.append('ducati')
print(motorcycles)
方法append()
让动态创建列表简单如喝水。例如,想要创建一个含有一系列元素的列表,你可以先创建一个空列表,然后再使用一系列函数调用 append()
添加元素。
motorcycles = []
motorcycles.append('honda')
motorcycles.append('yamaha')
motorcycles.append('suzuki')
motorcycles.append('ducati')
print(motorcycles)
这种创建列表的方法很常见,因为经常要等程序运行后,你才知道用户要在程序中存储哪些数据。为控制用户,可首先创建一个空列表,用于存储用户将要输入的值,然后将用户提供的每个新值附加到列表中。
2.2 在列表中插入元素
使用方法 insert()
通过指定新元素的索引和值,可在列表的任意位置添加新元素。
fruits = ['apple', 'banana']
fruits.insert(1, 'orange')
print(fruits) # ['apple', 'orange', 'banana']
在这个示例中,值 orange
被插入到列表值 apple
和 值 banana
中间。方法 insert()
在索引 1
处添加空间,并将值 orange
存储到这个地方。
2.3 一次添加多个元素
extend
是 Python 中列表(list)对象的一个方法,它用于在列表的末尾一次性追加另一个可迭代对象中的所有元素。
语法:
list.extend(iterable)
iterable
:这是一个可迭代对象,像列表、元组、字符串或者其他可迭代的数据结构都包含在内。
示例:
# 创建一个初始的水果列表
fruits = ['apple', 'banana']
# 打印 fruit 列表
print(fruits)
# 使用 extend() 方法将另一个列表中的元素添加到 fruits 列表的末尾
fruits.extend(['cherry', 'date'])
# 打印更新后的 fruits 列表
print(fruits) # 输出: ['apple', 'banana', 'cherry', 'date']
与 append()
方法的区别
append()
方法会把整个可迭代对象作为一个元素添加到列表的末尾,而 extend()
方法会将可迭代对象中的每个元素逐个添加到列表末尾。示例如下:
# 创建一个初始的水果列表
fruits = ['apple', 'banana']
# 打印 fruit 列表
print(fruits)
# 使用 append() 方法添加另一个列表
fruits = ['apple', 'banana']
fruits.append(['fig', 'grape'])
print(fruits) # ['apple', 'banana', ['fig', 'grape']]
# 用 extend 更合理
fruits = ['apple', 'banana']
fruits.extend(['fig', 'grape'])
print(fruits) # ['apple', 'banana', 'fig', 'grape']
3.从列表中删除元素
3.1使用 del
语句删除元素
如果知道要删除的元素在列表中的位置,可以用 del
语句。
fruits = ['apple', 'banana', 'cherry']
del fruits[1]
print(fruits) # ['apple', 'cherry']
使用 del
可删除任意位置的列表元素,但前提是要知道元素的索引。对负数索引同样也是如此。
3.2 使用方法 pop()
删除元素
方法 pop()
默认是删除列表末尾的元素,并让你能够接着使用它。
fruits = ['apple', 'banana', 'cherry']
print(fruits)
last = fruits.pop()
print(fruits) # ['apple', 'banana']
print(last) # cherry
方法 pop()
有什么其他的的用法呢?比如说让你从创建的包含水果的列表中选择你喜欢的一种水果,就可使用方法 pop()
打印一条消息,来表达你喜欢哪种水果:
fruits = ['apple', 'banana', 'cherry']
print(fruits)
last = fruits.pop()
print(fruits) # ['apple', 'banana']
print(f"I like {last}") # 创建你喜欢哪种水果的消息
使用方法 pop()
删除任何位置的元素
可以使用 pop()
删除列表中任意位置的元素,只需要在圆括号中指定要删除元素的索引即可。
fruits = ['apple', 'banana', 'cherry']
print(fruits)
last = fruits.pop(1) # 删除索引是1的元素
print(fruits)
print(f"I like {last}")
注意:每当你使用 pop()
是,被弹出(删除)的元素就不在列表中了。
选择使用 del
语句与方法 pop()
的一个简单的判断标准:如果你要从列表中删除一个元素,并且不再以任何的形式使用它了,那么你就可以使用 del
语句;如果你要在删除元素后还能继续使用它,就使用方法 pop()
。
3.3 根据值删除元素
当你不知道要删除的元素在列表中的索引,但是你知道要删除的元素的值,那么你就可以使用方法 remove()
。
fruits = ['apple', 'banana', 'cherry']
print(fruits)
fruits.remove('banana')
print(fruits) # ['apple', 'cherry']
方法 remove()
只删除第一个指定的值,如果要删除的值可能在列表中出现多次,就需要使用循环来确保将每个值都删除。(在这里先不做过多讲解,具体内容请待后续)
3.4 清空整个列表
方法 clear()
其作用是清空列表中的所有元素,让列表变为空列表。
fruits = ['apple', 'banana']
print(fruits)
fruits.clear()
print(fruits) # []
注意:clear()
方法不接受任何参数。
作者:学编程的修狗