Python中的列表推导式

2023-12-14 11:52:06

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

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))

文章来源:https://blog.csdn.net/2301_80002696/article/details/134988514
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。