Python中的列表推导式

本文详细介绍了Python中的列表推导式,包括生成指定范围的数值列表、根据现有列表生成满足特定需求的新列表以及根据条件选择元素。并通过实例演示如何编写一个计算歌手比赛去掉最高分和最低分后的平均分的程序。
摘要由CSDN通过智能技术生成

使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表。列表推导式通常有以下几种常用的语法格式:

1)生成指定范围的数值列表,语法格式如下:

    list=[Expression for var in range]

   list:表示生成的列表名称

  Expression:表达式,用于计算新列表的元素

  var:循环变量

  range:采用range()函数生成range对象

比如:

import random
list=[random.randint(10,100) for i in range(10)]
print("生成的随机数列表为:",list)

2)根据列表生成指定需求的列表,语法格式如下:

   newlist=[Expression for var in list]

  newlist:表示新生成的列表名称

  Expression:表达式,用于计算新列表的元素

  var:变量,值为后面列表的每个元素值

  list:用于生成新列表的原列表

例如:定义一个记录商品价格的列表,然后应用列表推导式生成一个将全部商品价格打五折的列表

list=[12.8,53.6,23.15,45.69]
newlist=[i*0.5 for i in list]
print('原价为:',list)
print('打五折后价格为:',newlist)

3)从列表中选择符合条件的元素组成新的列表,语法格式如下:

   newlist=[Expression for var in list if condition]

   newlist:表示新生成的列表名称

   Expression:表达式,用于计算新列表的元素

   var:变量,值为后面列表的每个元素值

   list:用于生成新列表的原列表

   condition:条件表达式,用于指定筛选条件

例如:定义一个记录商品价格的列表,然后应用列表推导式生成一个商品价格高于5000的列表

list=[1289,5896,6578,12345,8796,456]
newlist=[x for x in list if x>5000]
print('原列表为:',list)
print('大于五千的列表为:',newlist)

然后我们可以看一下下面的几个程序代码,看大家是否能看懂:

#一行代码输出数字1-10
print(' '.join([str(i) for i in range(1,11)]))
#一行代码输出数字1-100的和
print(sum([i for i in range(1,101)]))
#一行代码输出所有大写字母
print([chr(i) for i in range(65,91)])
#一行代码输出所有小写字母
print([chr(i) for i in range(97,123)])

相信大家很多人都看不懂第一种是怎么实现的吧,当然今天我也主要是说明第一种的实现

str.join(iterable)

返回一个新字符串,由组合数据类型iterable变量的每个元素组成,元素间用str分割

str='ni hao‘str.join('123') '1ni hao2ni hao3‘

str='-‘  str.join(('a','b','c')) 'a-b-c'

fruit=['apple','peach','banana','pear'] 

 sep=','  sep.join(fruit)    'apple,peach,banana,pear'

':'.join(fruit)    'apple:peach:banana:pear'

''.join(fruit)   'applepeachbananapear'

str.split(sep=None, maxsplit=-1)

返回一个列表,由str根据sep被分割的部分构成,默认分隔符为空白字符(包括空格、换行符、制表符等)maxsplit参数为最大分割次数

 'h-e-l-l-o'.split(sep='-')  ['h', 'e', 'l', 'l', 'o'] 

'h-e-l-l-o'.split('-',2)   ['h', 'e', 'l-l-o']

'hello hello he j h'.split('e')  ['h', 'llo h', 'llo h', ' j h']

txt = "Google#Runoob#Taobao#Facebook“

 txt.split("#", 1)        ['Google', 'Runoob#Taobao#Facebook']

str='he\tl\tl\to'   str.split()    ['he', 'l', 'l', 'o']

str='wor\nld'    str.split()   ['wor', 'ld']

 上面就是具体的实现和答案,我就不在过多的打这代码了,相信大家应该都能看懂。

下面给出一个例题:(看大家能否实现此题)

某市计划举行一场“畅想明天”歌咏比赛,需要编写一个歌手打分程序,输入7名评委的打分(0-10),去掉一个最低分,去掉一个最高分,输出该选手的得分(平均分)

print('畅想明天歌咏比赛打分程序'.center(30))
print('='*40)
score=[]
date=input('请输入7名裁判的打分,用英文逗号间隔分数:')
score=date.split(',')
print(score)
print('去掉一个最低分:',str(min(score)))
print('去掉一个最高分:',str(max(score)))
score.remove(min(score))
score.remove(max(score))
digit=[float(i) for i in score]
avg=sum(digit)/len(digit)
print('选手得分为:{}'.format(avg))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清潇沈默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值