我被要求定义一个名为avg
的函数。 avg
应计算具有相同数量的两个列表的平均值 - 从两个列表中获取所有数字并计算其平均值。
但是,不允许使用:
,也不允许使用多行(import
行除外)。
我最接近的尝试是:
//import line does not count as a line
import numpy
//the code line (only one is allowed)
avg=lambda lst1,lst2: numpy.mean(lst1+lst2)
我的功能正确计算了列表的平均值,但它包含:
,因此不够好。
答案 0 :(得分:8)
如果有人问你一个毫无意义的问题,我会给他一个毫无意义的答案。他应得的。
import numpy # You said it doesn't count as a line
# Take the : from dict's docstring.
exec("avg = lambda lst1, lst2{} numpy.mean(lst1+lst2)".format(dict.__doc__[213]))
>>> avg([1,2,3], [1,2,3])
2
答案 1 :(得分:3)
说到荒谬,我建议:
>>> exec(''.join(map(chr, [100, 101, 102, 32, 97, 118, 103, 40, 108, 115, 116, 49, 44, 32, 108, 115, 116, 50, 41, 58, 32, 114, 101,116, 117, 114, 110, 32, 48, 46, 53, 32, 42, 32, 115, 117, 109, 40, 108, 115, 116, 49, 32, 43, 32, 108, 115, 116, 50, 41, 32, 47, 32, 108, 101, 110, 40, 108, 115, 116, 49, 41])))
>>>
>>> avg([1,2,3,4],[5,6,7,8])
4.5
答案 2 :(得分:1)
您可以在Bharel的答案中使用exec但使用chr(58)
:
exec("avg = lambda lst1, lst2 " + chr(58) + " sum(lst1 + lst2, 0.) / (len(lst1) + len(lst2))")
print(avg([1,2,3], [4,5,6]))
或者如果你真的想使用numpy.mean:
exec("avg = lambda lst1, lst2 " + chr(58) + "numpy.mean(lst1+lst2)")