python 输入的一组数据成为列表_Python入门100个实例(33)——用列表推导式来缩短输入代码...

从本例学到什么

列表推导式是什么?怎么写?怎么执行的?

如何用列表推导式读入一组数?

实例程序

题目描述

涨工资

输入一组工资数据,写入列表。对于小于5000的工资,涨1.5倍。并输出涨后的工资数据。

输入格式:

数据之间空格隔开

输出格式:

涨工资后的数据,空格隔开。尾部 不带空格。

输入样例:

3000 4000 6000 8000 2000.5

输出样例:

4500.0 6000.0 6000 8000 3000.75

上述题目的参考答案

nums = input().split() #input()读入一行,split()切分成数字字符串,nums的值是数字串列表。

fnums = [float(n) for n in nums] #把nums列表内的各个元素转换成浮点数,存入fnums列表

results = [] #存储结果

for i in range(len(fnums)):

if fnums[i] < 5000:

results.append(str(fnums[i] * 1.5)) #str函数把浮点数转换为字符串

else:

results.append(nums[i]) #若为整数,nums[i]字符串中不包含小数点

print(' '.join(results))

#join是字符串操作方法,作用是把results内的各个字符串组合成一个完整的字符串

#各个字符串之间用空格间隔。

知识点讲解

列表推导式的写法: [表达式 for 变量 in 列表] 。这里,for和in是固定的写法。

列表推导式的结果是一个新列表。我们举例说明列表推导式的执行过程。

对于[i ** 2 for i in range(5)],执行过程是:

(1)变量 i 取值0, 计算0 ** 2,然后把结果0加入到结果列表尾部。

(2)变量 i取值1,计算1 ** 2,然后把结果1加入到结果列表尾部。

(3)变量 i 取值2, 计算2 ** 2, 然后把结果4加入到结果列表尾部。

(4)变量 i 取值3, 计算3 ** 2, 然后把结果9加入到结果列表尾部。

(5)变量 i 取值4, 计算4 ** 2, 然后把结果16加入到结果列表尾部。

(6)[i ** 2 for i in range(5)]的结果是:[0, 1, 4, 9, 16]。

对于上面的实例程序,假设输入内容是:3000 4000 6000 8000 2000.5,执行语句 nums = input().split()后,nums的值是[‘3000’, ‘4000’, ‘6000’, ‘8000’, ‘2000.5’],接下来执行语句:

fnums = [float(n) for n in nums]

执行过程是:

(1)变量 n取列表nums的第1个元素,值为’3000’,执行float函数转换为3000.0,加入结果列表尾部。

(2)变量 n取列表nums的第2个元素,值为’4000’,执行float函数转换为4000.0,加入结果列表尾部。

(3)变量 n取列表nums的第3个元素,值为‘6000’,执行float函数转换为6000.0,加入结果列表尾部。

(4)变量 n取列表nums的第4个元素,值为’8000’,执行float函数转换为8000.0,加入结果列表尾部。

(5)变量 n取列表nums的第5个元素,值为’2000.5’,执行float函数转换为2000.5,加入结果列表尾部。

(6)结果列表赋值给fnums。这样,fnums成为结果列表的名字。

上一节给出的代码中,头两行可以写成一行,即:

fnums = [float(s) for s in input().split()]

这里,把变量s替换为变量n,或者变量ds,或者其他变量名字都是可以的。float(s)是表达式,作用是得到数字字符串s对应的浮点数。

语句的执行步骤是:

(1)执行input(),读入一行。

(2)执行split(),得到数字串列表。

(3)依次遍历数字串列表中的元素s,执行float(s),得到的结果加入到结果列表尾部。

小结

列表推导式的写法: [表达式 for 变量 in 列表] 。

列表推导式的结果是一个新列表,我们称之为结果列表。执行过程是:变量依次取<列表>内的元素,执行表达式,得到的结果加入结果列表尾部。

一行输入中读入一组小数存入列表的写法如:

fnums = [float(s) for s in input().split()]

原文链接:https://blog.csdn.net/yedouble/article/details/105403013

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值