首页 > temp > 简明python教程 >
-
Python 列表数据类型(list)[学习 Python 必备基础知识][看此一篇就够了](2)
使用+
加法运算符将两个或者多个列表相加,达到拼接列表的目的,这样做会生成一个新的列表,原有的列表不会被改变。
从执行效率上看,不建议使用此种方法,因为执行效率较低。
建议使用之前介绍的几种方法(术业有专攻,用专门的方法更专业哦)。
举例如下所示:
list1 = ['微信公众号:']
list2 = ['码农阿杰']
print('list1 =', list1)
print('list2 =', list2)
print('list1 + list2 =', list1 + list2)
运行结果:
list1 = ['微信公众号:']
list2 = ['码农阿杰']
list1 + list2 = ['微信公众号:', '码农阿杰']
5.2 删(删除列表元素)
5.2.1 根据目标元素所在位置的索引进行删除
根据目标元素所在位置的索引进行删除,需要用del
关键字或 pop()
方法。
del
关键字,是专门用来执行删除操作的,不仅可以删除列表,还可以删除列表中的某些元素。
pop()
方法,删除列表中指定索引处的元素。
使用格式如下所示:
del listname[index] # 删除列表中的单个元素
del listname[start : end] # 删除列表中某段连续的元素,del 会删除从索引 start 到 end 之间的元素,不包括 end 位置的元素。
对以上格式说明,
-
listname
表示要删除元素的列表。 -
index
表示要删除元素的索引值。 -
start
表示起始索引值。 -
end
表示结束索引值。
listname.pop(index)
对以上格式说明,
-
listname
表示要删除元素的列表。 -
index
表示要删除元素的索引值。如果不写index
参数,默认会删除列表中的最后一个元素。
举例如下所示:
例一,使用del
关键字删除列表元素
(1)使用del
关键字删除单个元素
list_demo = ['微信公众号', ':', '码农阿杰'] # 要删除元素的列表
print('删除前的列表,list_demo =', list_demo)
del list_demo[1] # 删除索引值 1 所对应的元素
print('删除后的列表,list_demo =', list_demo)
运行结果:
删除前的列表,list_demo = ['微信公众号', ':', '码农阿杰']
删除后的列表,list_demo = ['微信公众号', '码农阿杰']
(2)使用del
关键字删除某段连续的元素
list_demo = ['微信公众号', ':', '码农阿杰'] # 要删除元素的列表
print('删除前的列表,list_demo =', list_demo)
del list_demo[0: 2] # 删除索引值 0 到 2 ,不包括 2 所对应的连续的元素
print('删除后的列表,list_demo =', list_demo)
运行结果:
删除前的列表,list_demo = ['微信公众号', ':', '码农阿杰']
删除后的列表,list_demo = ['码农阿杰']
例二,使用pop()
方法删除列表元素
(1)指定index
参数
list_demo = ['微信公众号', ':', '码农阿杰']
print('删除前:list_demo =', list_demo)
list_demo.pop(1) # 删除索引值为 1 的元素
print('删除后:list_demo =', list_demo)
运行结果:
删除前:list_demo = ['微信公众号', ':', '码农阿杰']
删除后:list_demo = ['微信公众号', '码农阿杰']
(2)不指定index
参数
list_demo = ['微信公众号', ':', '码农阿杰']
print('删除前:list_demo =', list_demo)
list_demo.pop() # 不指定 index 参数,默认删除最后一个元素
print('删除后:list_demo =', list_demo)
运行结果:
删除前:list_demo = ['微信公众号', ':', '码农阿杰']
删除后:list_demo = ['微信公众号', ':']
5.2.2 根据元素本身的值进行删除
根据元素本身的值进行删除,要用到列表提供的remove()
方法。
使用格式如下所示:
listname.remove(element)
对以上语法格式说明:
-
remove()
:remove()
方法会根据元素本身的值进行删除。要注意的是:①该方法只会删除遇见的第一个指定元素,如果列表中还有相同的元素是不会被删除的;②必须保证要删除的元素在列表中是存在的,否则会报错。 -
listname
:要删除元素的列表。 -
element
:要删除的元素。
举例如下所示:
(1)列表中存在指定要删除的元素
list_demo = ['微信公众号', ':', '码农阿杰', '微信公众号']
print('删除前:list_demo =', list_demo)
list_demo.remove('微信公众号') # 删除指定元素 “微信公众号”,只会删除遇见的第一个指定元素
print('删除后:list_demo =', list_demo)
运行结果:
删除前:list_demo = ['微信公众号', ':', '码农阿杰', '微信公众号']
删除后:list_demo = [':', '码农阿杰', '微信公众号']
(2)列表中不存在指定要删除的元素
list_demo = ['微信公众号', ':', '码农阿杰', '微信公众号']
print('删除前:list_demo =', list_demo)
list_demo.remove('微信号') # 列表中不存在指定要删除的元素,会报错
print('删除后:list_demo =', list_demo)
运行结果:
删除前:list_demo = ['微信公众号', ':', '码农阿杰', '微信公众号']
Traceback (most recent call last):
File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 16, in <module>
list_demo.remove('微信号') # 列表中不存在指定要删除的元素,会报错
ValueError: list.remove(x): x not in list
5.2.3 删除列表中的所有元素
要删除列表中的所有元素,需要使用列表提供的clear()
方法。
使用格式如下所示:
listname.clear()
对以上格式说明,
-
clear()
:clear()
方法会删除列表中的所有元素。 -
listname
:要删除所有元素的列表。
举例如下所示:
list_demo = ['微信公众号', ':', '码农阿杰']
print('删除前:list_demo =', list_demo)
list_demo.clear() # 删除列表中所有的元素,也可以称为清空列表
print('删除后:list_demo =', list_demo)
运行结果:
删除前:list_demo = ['微信公众号', ':', '码农阿杰']
删除后:list_demo = []
5.3 改(修改列表元素)
5.3.1 修改单个元素
格式如下所示:
listname[index] = element
对以上格式说明,
-
listname
:要修改元素的列表。 -
index
:要修改元素对应的索引值。 -
element
:新元素值。
举例如下所示:
list_demo = ['微信号', ':', '码农阿杰']
print('修改前:list_demo =', list_demo)
list_demo[0] = '微信公众号' # 修改索引值为 0 的元素
print('修改后:list_demo =', list_demo)
运行结果:
修改前:list_demo = ['微信号', ':', '码农阿杰']
修改后:list_demo = ['微信公众号', ':', '码农阿杰']
5.3.2 修改一组元素
修改一组元素,其实就是使用切片的方式给一组元素赋值。但是,不支持单个赋值(通常指数字。如果是字符串的话,Python 会自动把字符串转换成序列,其中的每个字符都是一个元素)。
如果不指定步长(指的是不指定step
参数),新赋值的元素个数与原来的元素个数可以不相同。如此一来,就说明该操作既可以为列表添加元素(对空切片赋值),也可以为列表删除元素。
如果指定步长,就要求新赋值的元素个数与原来的元素个数相同。
举例如下所示:
例一,不指定步长
(1)修改一组元素的值
list_demo = ['微信号', '=', '码农阿杰', '。']
print('修改前:list_demo =', list_demo)
list_demo[0: 2] = ['微信公众号', ':']
print('修改后:list_demo =', list_demo)
运行结果:
修改前:list_demo = ['微信号', '=', '码农阿杰', '。']
修改后:list_demo = ['微信公众号', ':', '码农阿杰', '。']
(2)不支持单个赋值(通常指数字)
list_demo = ['微信号', ':', '码农阿杰', '。']
print('修改前:list_demo =', list_demo)
list_demo[0: 0] = 12 # 不支持单个赋值(数字)
print('修改后:list_demo =', list_demo)
运行结果:
修改前:list_demo = ['微信号', ':', '码农阿杰', '。']
Traceback (most recent call last):
File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 36, in <module>
list_demo[0: 0] = 12
TypeError: can only assign an iterable
(3)不支持单个赋值(通常指数字),但是,如果是字符串的话,Python 会自动把字符串转换成序列,其中的每个字符都是一个元素
list_demo = ['微信号', ':', '码农阿杰', '。']
print('修改前:list_demo =', list_demo)
list_demo[0: 0] = '微信公众号' # 不支持单个赋值(通常指数字),但是,如果是字符串的话,Python 会自动把字符串转换成序列,其中的每个字符都是一个元素
print('修改后:list_demo =', list_demo)
运行结果:
修改前:list_demo = ['微信号', ':', '码农阿杰', '。']
修改后:list_demo = ['微', '信', '公', '众', '号', '微信号', ':', '码农阿杰', '。']
(4)为列表添加元素(对空切片赋值)
list_demo = ['码农阿杰']
print('修改前:list_demo =', list_demo)
list_demo[0: 0] = ['微信公众号', ':'] # 对空切片赋值
print('修改后:list_demo =', list_demo)
运行结果:
修改前:list_demo = ['码农阿杰']
修改后:list_demo = ['微信公众号', ':', '码农阿杰']
(5)为列表删除元素
list_demo = ['微信公众号', ':', '码农阿杰', '。']
print('修改前:list_demo =', list_demo)
# 这里切片的写法有很多种,例如 list_demo[:]、list_demo[0:]、list_demo[0: 4]、list_demo[-4:]等等,就不全部列举了,可以研究一下切片。
list_demo[:] = ['微信公众号', ':', '码农阿杰'] # 新赋值的元素个数与原来的元素个数可以不相同。相当于重新给列表赋值,并且元素个数变少了。
print('修改后:list_demo =', list_demo)
运行结果:
修改前:list_demo = ['微信公众号', ':', '码农阿杰', '。']
修改后:list_demo = ['微信公众号', ':', '码农阿杰']
例二,指定步长
list_demo = [1, 2, 3, 4, 5, 6, 7] # 为了看的清楚,用字母添加到纯是数字的列表中
print('修改前:list_demo =', list_demo)
list_demo[1: 6: 2] = ['a', 'b', 'c'] # 从索引 1 开始每隔两个添加一个新元素,到索引 6 ,不包括 索引 6
print('修改后:list_demo =', list_demo)
运行结果:
修改前:list_demo = [1, 2, 3, 4, 5, 6, 7]
修改后:list_demo = [1, 'a', 3, 'b', 5, 'c', 7]
5.4 查(查找列表元素)
5.4.1 使用列表提供的index()
方法查找元素
使用格式如下所示:
listname.index(obj, start, end)
对以上格式说明,
-
返回值:
index()
方法返回某个元素在列表中出现的位置(索引)。如果查找的元素不存在,会报错。 -
listname
:表示列表名称。 -
obj
:表示要查找的元素。 -
start
:表示起始位置。可以不写,表示检索从开头到end
(不包括end
)的元素。 -
end
:表示结束位置。可以不写,表示检索从start
到末尾的元素。 -
start
和end
可以都不写,表示检索整个列表;都写,表示检索start
和end
(不包括end
)之间的元素。
举例如下所示:
list_demo = [1, 2, 3, 4, 5, 6, 7] # 列表
index1 = list_demo.index(3) # 在整个列表中检索元素 3 的位置
print('在整个列表中检索元素 3 的位置:', index1)
index2 = list_demo.index(3, )
print('在整个列表中检索元素 3 的位置:', index2)
index3 = list_demo.index(3) # 检索元素 3 在列表中的位置(在列表中的索引值)
print('元素 3 在列表中的位置为:', index3)
index4 = list_demo.index(3, 0, 3) # 在索引值 0 到 3 之间检索元素 3 在列表中的位置
print('在索引值 0 到 3 之间检索元素 3 在列表中的位置为:', index4)
index5 = list_demo.index(3, 0, 2) # 在索引值 0 到 2 之间检索元素 3 在列表中的位置,会报错,因为在这个范围内没有元素 3
print('在索引值 0 到 2 之间检索元素 3 在列表中的位置为:', index5)
# index6 = list_demo.index(11) # 也会报错,因为在列表中不存在要查找的元素
# print(index6)
运行结果:
在整个列表中检索元素 3 的位置: 2
在整个列表中检索元素 3 的位置: 2
元素 3 在列表中的位置为: 2
在索引值 0 到 3 之间检索元素 3 在列表中的位置为: 2
Traceback (most recent call last):
File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 69, in <module>
index5 = list_demo.index(3, 0, 2) # 在索引值 0 到 2 之间检索元素 3 在列表中的位置,会报错,因为在这个范围内没有元素 3
ValueError: 3 is not in list
#Traceback (most recent call last):
# File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 72, in <module>
# index6 = list_demo.index(11) # 也会报错,因为在列表中不存在要查找的元素
#ValueError: 11 is not in list
5.4.2 使用列表提供的count()
方法查找元素
使用格式如下所示:
listname.count(obj)
对以上格式说明,
-
count()
方法的返回值:count()
方法返回某个元素在列表中出现的次数。如果返回0
,表示列表中不存在该元素。 -
listname
:表示列表名。 -
obj
:表示要统计的元素。
举例如下所示:
list_demo = [1, 2, 3, 4, 3, 6, 3] # 列表
nums1 = list_demo.count(3) # 统计元素 3 在列表中出现的次数
print('统计元素 3 在列表中出现的次数:', nums1, '次。')
# 判断列表中是否存在元素 7
nums2 = list_demo.count(7)
if nums2:
print('列表中存在元素 7 ')
else:
print('列表中不存在元素 7 ')
运行结果:
统计元素 3 在列表中出现的次数: 3 次。
列表中不存在元素 7
6 列表排序
6.1 使用列表提供的 sort()
方法排序
对列表进行原地排序,可以使用列表自身提供的sort()