一、添加、修改和删除列表元素
添加、修改和删除列表元素也称为更新列表。在实际开发时,经常需要对列表进行更新。下面我们就分别如何实现列表元素的添加、修改和删除。
1、添加元素
在前面我们说过了“+”号将两个序列连接,该方法也可以实现为列表添加元素。但是这种方法的执行速度要比直接使用列表对象的append()方法慢,所以建议在实现添加元素时,使用列表对象的append()方法实现。列表对像的append()方法用于在列表的末尾追加元素,语法格式如下:
listname.append(obj)
其中,listname为要添加元素的列表名称;obj为要添加到列表末尾的对象。
例如,定义一个包括4个元素的列表,然后应用append()方法向该列表的末尾再添加一个元素,可以使用下面的代码:
nba2 = ["姚明","郭艾伦","易建联","林书豪","王大治","周琦","巴勒","詹姆斯","奥尼尔"] nba2.append("字母哥") print(nba2) print(len(nba2))
执行结果:
['姚明', '郭艾伦', '易建联', '林书豪', '王大治', '周琦', '巴勒', '詹姆斯', '奥尼尔', '字母哥']
10
列表对象除了提供append()方法可以向列表中添加元素外,还提供了insert()方法可以向列表中添加元素,该方法用于向列表的指定位置插入元素。但是由于该方法的执行效率没有append()高,所以不推荐使用。
例:
nba2.insert(1,"张晓鹏") #执行效率没有append高 print(nba2)
执行结果:['姚明', '张晓鹏', '郭艾伦', '易建联', '林书豪', '王大治', '周琦', '巴勒', '詹姆斯', '奥尼尔', '字母哥']
上面介绍的是向列表中添加元素,如果想要将一个列表中的元素添加到另一个列表中,可以使用列表对象的extend()方法实现。extend()方法的语法如下:
listname.extend(seq)
其中,listname为愿列表;seq为要添加的列表。语句执行后,seq的内容将追到listname的后面。
team = ["火箭队","勇士","雷霆","开拓者","爵士"] nba2.extend(team) print(nba2)
执行结果:['姚明', '张晓鹏', '郭艾伦', '易建联', '林书豪', '王大治', '周琦', '巴勒', '詹姆斯', '奥尼尔', '字母哥', '火箭队', '勇士', '雷霆', '开拓者', '爵士']
2、修改元素
修改列表中的元素只需要通过索引获取该元素,然后再为其赋值即可,例如定义一个保存3个元素的列表,然后修改索引值为2的元素,代码如下:
team = ["火箭队","勇士","雷霆","开拓者","爵士"] team[2]="辽宁" print(team)
执行结果:['火箭队', '勇士', '辽宁', '开拓者', '爵士']
3、删除元素
删除元素有两种情况,一种是根据索引删除,另一种是根据元素值删除。下面分表进行介绍哦:
根据索引删除
删除列表中的指定元素和删除列表类似,也可以使用del语句实现,所不同的就是在指定列表名称时,换为列表元素。例如,定义一个保存3个元素的列表,删除最后一个元素,可以使用下面代码:
#删除元素,索引删除,根据元素值删除 del team[2] #可以通过负数索引删除 print(team) #根据索引删除
根据元素值删除
如果想要删除一个不确定其位置的元素,可以使用列表对象的remove()方法实现。例如,要删除列表中内容“勇士”可以使用下面代码:
if "爵士"in team: #先判断会防止删除的元素不在列表中报错 team.remove("爵士") print(team) team.remove("勇士") #直接删除 print(team)
说明:列表对象的count()方法用于判断指定元素出现的次数,返回结果为0时,表示该元素不存在。
二、对列表进行统计
python的列表提供了内置的一些函数来实现统计放面的功能。
1、获取指定元素出现的次数
使用列表对象的count()方法可以获取指定元素在列表中出现的次数,语法如下:
listname.count(obj)
其中,listname表示列表的名称;obj表示要判断是否存在的对象,这里只能进行精确的匹配,即不嫩式元素值的一部分。
#count() 元素在列表中出现的次数 listname.count(obj) 精确匹配
song = ["我","ni","ta","ta"]
number = song.count("ta")
print(number)
执行结果:2
2、获取指定元素首次出现的下标
使用列表对象的index()方法可以获取指定元素在列表中首次出现的位置(索引),语法如下:
#index() 元素在列表中首次出现的位置索引 或者下标 listname.index(obj) song = ["我","ni","ta","ta"] number = song.index("ni") print(number)
执行结果:1 #表示出现的位置为1
如果指定的对象不存在,则会报错
3、统计数值列表元素和
在python中,提供了sum()函数用于统计数值列表中各元素的和,语法如下:
sun(iterable[,start])
iterable:表示要统计的列表
start:表示统计结果是从哪个数开始(将统计结果加上start所指的数),是可选参数,如果没有指定,默认为0
例:
age = [29,27,28,29,26,20,22] he = sum(age) print(he) he = sum(age,1000) #在原基础上再加1000 print(he)
执行结果:181
1181
三、对列表进行排序
在实际开发时,经常需要对列表进行排序。python中提供了两种常用的对列表进行排讯的方法:
1、使用列表对象的sort()方法实现
列表队形提供了sort()方法用于对原列表中的元素进行排序,排序后原列表的顺序将发生改变。列表对象的sort()方法的语法格式如下:
listname.sort(key=name,reverse=False)
参数说明如下:
listname: 表示要进行排序的列表。
key:表示指定一个从每个列表元素中提取一个比较键(key=str.lower表示在排序时不区分字母大小写)。
reverse:可选参数,如果将其值指定为Ture,则表示降序排列;如果将其指定为False,则表示升序排列,默认为升序排列。
例:
age = [29,27,28,29,26,20,22] print("原列表:",age) age.sort() #升序排列 print("升序:",age) char = ["cat","Egg","with"] char.sort() #升序排列 print("升序:",char) char = ["cat","Egg","with"] char.sort(key=str.lower) #不区分大小写进行升序排列 print("升序:",char)
执行结果:
原列表: [29, 27, 28, 29, 26, 20, 22]
升序: [20, 22, 26, 27, 28, 29, 29]
升序: ['Egg', 'cat', 'with']
升序: ['cat', 'Egg', 'with']
说明:采用sort()方法对列表进行排序时,对于中文支持不好。排序的结果与我们常用的按拼音或笔画都不一致。如果需要实现对中文的列表排序,还需要重新编写相应的方法进行处理,不能直接使用sort()方法。
2、使用内置的sorted()函数实现
在python中,提供了一个内置的sorted()函数,用于对列表进行排序。使用该函数排序后,愿列表的元素顺序不变。sorted()函数语法如下:
使用内置的sorted()函数 注意:原列表元素顺序不变 需要建立副本sorted(iterable,key=None,reverse=False) 升序
char = ["cat","Egg","with"] char1=sorted(char) #升序排列 print(char1) char2=sorted(char,reverse =True) #降序排列 print(char2)
执行结果:['Egg', 'cat', 'with']
['with', 'cat', 'Egg']
四、列表推导式
使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表。列表推导式通常有以下几种常用的语法格式:
1、生成指定范围的数值列表,语法格式如下:
list = [Expression for var in range]
参数说明:
list:表示生成列表的名称
Expression:表达式,用于计算新列表的元素
var:循环变量
range:采用range()函数生成的range对象
例:
import random #导入random标准库 list1 =[random.randint(10,100) for i in range(10)] #定义一个空列表 print(list1)
执行结果:[60, 76, 94, 73, 85, 90, 54, 48, 15, 41]
2、根据列表生成指定需求的列表,语法如下
newlist = [Expression for var in list]
参数说明:
newlist:表示新生成列表的名称
Expression:表达式,用于计算新列表的元素
var:循环变量
list:用于生成新列表的原列表
例:
price = [1000,500,999,666,888] #新建列表 sale = [int(x*0.5) for x in price] print("原价格:",price) print("打折后:",sale)
执行结果:原价格: [1000, 500, 999, 666, 888]
打折后: [500, 250, 499, 333, 444]
3、从列表中选择符合条件的元素生成新的列表,语法如下:
newlist = [Expression for var in list if condition]
参数说明:
newlist:表示新生成列表的名称
Expression:表达式,用于计算新列表的元素
var:循环变量
list:用于生成新列表的原列表
condition:条件表达式用于指定的筛选条件:
例:
price = [1000,500,999,666,888] sale1 = [x for x in price if x > 500] #大于500的价格形成新的列表 print(sale1)
执行结果:[1000, 999, 666, 888]