列表的添加
.append()
lst = []
# 向列表末尾添加内容
# append() 追加
lst.append("张绍刚")
lst.append("赵本山")
lst.append("张无忌")
print(lst)
# insert() 在指定位置插入,原先该位置以后的所有元素都需要往后挪n个位置,因此插入的效率极低。
lst.insert(0, "赵敏") #在第0个位置插入
print(lst)
# extend() 可以合并两个列表, 批量的添加
lst.extend(['武则天', "嬴政", "马超"])
print(lst)
输出结果 :
['张绍刚', '赵本山', '张无忌']
['赵敏', '张绍刚', '赵本山', '张无忌']
['赵敏', '张绍刚', '赵本山', '张无忌', '武则天', '嬴政', '马超']
列表的删除
无论是使用del
命令,还是使用.remove()
命令或者是.pop()
命令,删除列表是对原列表直接进行操作,这与之前的字符串操作有很大区别
因此要连续操作,删除指定位置的元素,最好的操作方式是从后往前删,不然会改变实际元素位置的。
del lst
删除整个lst列表
del lst[]
删除列表中的元素
为了方便展示,我特意把元素按照本身位置进行了标记,请细细体会两者的差异,
lst = ['0', '1', '2', '3', '4', '5', '6']
# 依次删除指定索引位置的元素
del lst[5] # 删除索引为5的元素
print(lst)
del lst[3] # 删除索引为3的元素
print(lst)
del lst[1] # 删除索引为1的元素
print(lst)
#结果是:
['0', '1', '2', '3', '4', '6']
['0', '1', '2', '4', '6']
['0', '2', '4', '6']
如果依次从前向后删除元素,删除后元素的位置会发生变化,列表的位数会缩短,命令甚至会超出。
# 删除
lst = ['0', '1', '2', '3', '4', '5', '6']
# 依次删除指定索引位置的元素
del lst[1] # 删除索引为1的元素
print(lst)
del lst[3] # 删除索引为3的元素
print(lst)
del lst[5] # 删除索引为5的元素
print(lst)
#输出结果
['0', '2', '3', '4', '5', '6']
['0', '2', '3', '5', '6']
Traceback (most recent call last):
File "D:\Python\列表\删除方法.py", line 43, in <module>
del lst[5] # 删除索引为5的元素
~~~^^^
IndexError: list assignment index out of range
del
命令需要指定元素的索引位置,而.remove()
命令可以规避这个溢出的问题。
使用.remove()
命令进行删除,不需要知道列表的位置直接删除元素。
lst = ['赵敏', '张绍刚', '赵本山', '张无忌', '武则天', '嬴政', '马超']
lst.remove("马超") # 删除某个元素
print(lst)
使用.pop()命令删除
pop()
是Python列表(list)的一个方法,用于删除并返回列表中的指定索引位置的元素。这个方法可以有一个可选的参数,用来指定要删除的元素的索引,如果默认不写是删除并返回列表中的最后一个元素(-1)。
语法:
returned = list.pop(index)
list
:要操作的列表。index
:要删除的元素的索引。如果不提供索引,默认为 -1,即删除并返回列表中的最后一个元素。returned
:被删除的元素,也是被pop()
返回的值。
fruits = ["apple", "banana", "cherry"]
# 删除并返回索引为1的元素
removed_fruit = fruits.pop(1)
print(removed_fruit) # 输出: "banana"
print(fruits) # 输出: ["apple", "cherry"]
pop()
方法会修改原始列表,并且返回被删除的元素,所以你可以选择将其赋值给一个变量以备后续使用。如果不提供索引参数,它将默认删除并返回最后一个元素。如果索引超出了列表的范围,将引发 IndexError
异常。
# 修改
lst = ['赵敏', '张绍刚', '赵本山', '张无忌', '武则天', '嬴政', '马超']
lst[4] = "恺" # 直接用索引就可以进行修改操作
print(lst)
#输出结果
['赵敏', '张绍刚', '赵本山', '张无忌', '恺', '嬴政', '马超']
# 查询
lst = ['赵敏', '张绍刚', '赵本山', '张无忌', '恺', '嬴政', '马超']
print(lst[4]) # 直接用索引进行查询操作
#输出结果
恺
小练习:把列表内所有的姓张的人修改成姓王,其余不变
思考第1步:把列表内的所有元素取出来
lst = ['赵敏', '张绍刚', '张无忌', '武则天', '嬴政', '马超']
for item in lst:#用for循环取出所有的元素内容
print (item) #顺序打印所有lst[]里的内容
#输出结果为:
赵敏
张绍刚
张无忌
武则天
嬴政
马超
思考第2步:把所有以“张”开头的元素,替换为以“王”开头的元素
for item in lst:#用for循环取出所有的元素内容
if item.startswith("张"):#判断是否以"张"开头
new_name ="王"+item[1:]#元素的组合方法用+号,配合从第1号位到最后。
print(new_name)
#输出结果为:
王绍刚
王无忌
*此时,我们看不到元素的索引位置
思考第3步:如何把新得到的名字丟回列表
for循环想要计数. 必须借助于range()
range()用法:
range(n)
: 从0数到n. 不包含nrange(m, n)
: 从m数到n, 不包含nrange(m, n, s)
: 从m数到n, 不包含n, 每次的间隔是s
我们举例
lst = ['赵敏', '张绍刚', '张无忌', '武则天', '嬴政', '马超']
# 使用for i in range(len(lst))
for i in range(len(lst)):
print(lst[i]) # 输出:1 2 3 4 5
# 使用for item in lst
for item in lst:
print(item) # 输出:1 2 3 4 5
之前for循环的写法for item in lst:
, 我们看不到元素的索引位置,因此我们需要如下写法for i in range(len(lst))
=for i in range(0,len(lst))
两种写法都是从0到列表的最后一位
lst = ['赵敏', '张绍刚', '张无忌', '武则天', '嬴政', '马超']
# for item in lst: # 此时, 我们看不到元素的索引位置
for i in range(len(lst)): # len(lst)列表的长度 -> 可以直接拿到列表索引的for循环
item = lst[i] # item依然是列表中的每一项
if item.startswith("张"):
# 张绍刚
new_name = "王"+item[1:]
print(new_name)
# 把新名字丢回列表(需要索引了?)
lst[i] = new_name # 修改
print(lst)
这里着重讲解for i in range(len(lst))
这个由range(0,7)
演变而来的
在列表lst = ['赵敏', '张绍刚', '张无忌', '武则天', '嬴政', '马超']
中,一共存在6个列表元素,需要表示为range(0,7)
或range(7)
,为了方便操作,列表最好要用len(lst)
自动数出来。