【发布时间】:2018-01-13 06:19:39
【问题描述】:
我试图了解函数式编程语言是如何工作的,我决定在 python 中以函数式方式采用程序的方法,因为它是我感觉更舒服的语言。
我正在尝试,给定一个数组数组和一个有 2 个参数的函数,得到两个句子,每个数组中有两个元素。
如果不嵌套 lambda,我无法弄清楚如何做到这一点,但即使使用它们:
def sentence( x, y):
return " this string contains %s and %s" % (x,y)
matrix = [['a','b'],['c','d']]
output = map(lambda a: map(lambda b: map(lambda c,d: sentence(c,d),b),a),matrix)
当然,因为我是一个老式的命令式程序员,所以我尝试使用老式的 for 循环来获得输出。当然有更好的方法,但是......
#print(output)
for i in output:
#print(i)
for j in i:
#print(j)
for k in j:
print(k)
最后我只得到这个结果:
File "fp.py", line 12, in <module>
for k in j:
TypeError: <lambda>() missing 1 required positional argument: 'd'
所以是的,我想我在将值传递给函数时做错了,但我猜不出原因。
有什么想法吗?
【问题讨论】:
-
你能展示你的输入和输出应该是什么样子吗?我无法准确查看您想要的内容。
-
如果您的目标是教育,请考虑尝试coconut-lan.org。也看看
toolz。 -
可能是我的错,因为我不是英语母语人士。输入是矩阵变量,包含两个数组 a,b 和 c,d。输出应该是一个包含两个字符串的数组,“这个字符串包含 a 和 b”和“这个字符串包含 c 和 d”。
标签: python functional-programming