因为我对python中的函数编程还很陌生,所以我一直坚持这个问题。任何帮助,将不胜感激!
注意:我知道使用map更简单,因为我们可以使用iterable,但是我只需要使用lambda函数来完成此操作。
Given the following list, ages of 25 people:
ages = [79, 91, 25, 22, 95, 69, 47, 87, 87, 2, 13, 94, 50, 73, 29, 87, 81, 51, 32, 69, 10, 91, 45, 7,
51]
Q: Make a new list in which you multiply each age with a random number between 1 to 10
(Generate a random number for each age and multiply them together). Only use Lambda
Function for the multiplication. (You can use random generator provided by in python to
generate the random numbers)
这是我到目前为止所拥有的:
import random
inconsistent = []
ages = [79, 91, 25, 22, 95, 69, 47, 87, 87, 2, 13, 94, 50, 73, 29, 87, 81, 51, 32, 69, 10, 91, 45, 7,
51]
for i in range(25):
inconsistent.append(random.randint(1,10))
print(inconsistent)
x = lambda a,b: a*b
x(ages, inconsistent)
以下是我得到的错误:
TypeError Traceback (most recent call last)
<ipython-input-24-646727e92091> in <module>
10
11 x = lambda a,b: a*b
---> 12 x(ages, inconsistent)
<ipython-input-24-646727e92091> in <lambda>(a, b)
9 print(inconsistent)
10
---> 11 x = lambda a,b: a*b
12 x(ages, inconsistent)
TypeError: can't multiply sequence by non-int of type 'list'
使用map
。Map可以lambda
作为第一个参数,而可以iterable
作为第二个参数。
ages = [79, 91, 25, 22, 95, 69, 47, 87, 87, 2, 13, 94, 50, 73, 29, 87, 81, 51, 32, 69, 10, 91, 45, 7,
51]
print(list(map(lambda x: x * random.randint(1,10), ages)))
[553, 91, 175, 198, 285, 345, 470, 174, 87, 10, 91, 752, 50, 730, 261, 261, 567, 204, 160, 552, 90, 364, 135, 70, 51]
就你而言
import random
inconsistent = []
ages = [79, 91, 25, 22, 95, 69, 47, 87, 87, 2, 13, 94, 50, 73, 29, 87, 81, 51, 32, 69, 10, 91, 45, 7,
51]
for i in range(25):
inconsistent.append(random.randint(1,10))
print(inconsistent)
x = lambda a,b: a*b
output = []
for i in range(25):
output.append(x(ages[i], inconsistent[i]))
print(output)
[7, 7, 5, 5, 3, 5, 5, 10, 10, 9, 9, 7, 3, 8, 7, 5, 1, 10, 5, 2, 5, 5, 2, 9, 3]
[553, 637, 125, 110, 285, 345, 235, 870, 870, 18, 117, 658, 150, 584, 203, 435, 81, 510, 160, 138, 50, 455, 90, 63, 153]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句