python-----列表(list)下

  一、添加、修改和删除列表元素     

        添加、修改和删除列表元素也称为更新列表。在实际开发时,经常需要对列表进行更新。下面我们就分别如何实现列表元素的添加、修改和删除。

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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值