如何将列表中的每个元素乘以给定的数字?

时间:2020-10-20 09:50:36

标签: python python-3.x python-3.6 python-3.7

我想将列表中的每个元素乘以给定的数字。

例如,当我在命令提示符下键入以下内容时:

C:\Users\bella\projects\testing1> test.py 5,10,15,20,25,30 2

结果应为:[10,20,30,40,50,60] (注意:每个元素都乘以2)

C:\Users\bella\projects\testing1> test.py 5,10,15,20,25,30 0.5

结果应为:[2.5,5,7.5,10,12.5,15] (注意:每个元素都乘以0.5)

这是我的代码...

import sys

user_input = sys.argv[1]
u_split = user_input.split(",")
option = sys.argv[2]

n = map(lambda x:x*(option), user_input)
print(n)

这是我在命令提示符下看到的:

C:\Users\bella\projects\testing1> test.py 10,20,30,40,50,60 2
<map object at 0x03588160>

2 个答案:

答案 0 :(得分:0)

您需要先将输入解析为数字。然后,map很懒惰-您需要一个list()才能将地图变成列表。

import sys

user_input = sys.argv[1]
u_split = user_input.split(",")
option = float(sys.argv[2]) # parse into float

n = list(map(lambda x: float(x)*option, u_split))
print(n)

或者简单地:

n = [float(x) * option for x in u_split]

答案 1 :(得分:0)

解决方案:
我对您的代码进行了微小的更改,它现在应该可以工作:

import sys

user_input = sys.argv[1]
u_split = [float(n) for n in user_input.split(",")]
option = float(sys.argv[2])

n = map(lambda x:x*(option), u_split)
print(list(n))

输出:

[2.5, 5.0, 7.5, 10.0, 12.5, 15.0]