通过迭代器定义的函数列表包含同一函数的一堆副本

彼得·阿恩特

我想通过将函数的值设置为在值列表中找到的函数来创建每个在集合{0,1,2}上定义的函数的列表。为了检查我做了什么,然后打印我的函数的值。这是两次尝试:

values_list = [[1,2,3],[4,5,6]]

function_list = []
function_list.append((lambda x: values_list[0][x]))
function_list.append((lambda x: values_list[1][x]))
print('Values of 1st function:',function_list[0](0),function_list[0](1),function_list[0](2))
print('Values of 1st function:',function_list[1](0),function_list[1](1),function_list[1](2))

function_list1 = []
for i in range(2):
    function_list1.append((lambda x: values_list[i][x]))
print('Values of 1st function:',function_list1[0](0),function_list1[0](1),function_list1[0](2))
print('Values of 2nd function:',function_list1[1](0),function_list1[1](1),function_list1[1](2))

当然,第一次尝试可以正常工作,但是在第二次尝试中,列表中的两个功能是相同的。它们都返回第二组值。

好的,所以我想原因是,我在定义中使用的迭代器停止在第二组值上。但是在实践中,我将拥有庞大的函数值列表,它们的长度各不相同,并且像第一次尝试那样,我无法为列表中的每个函数键入一行。我该怎么做才能解决这个问题?

王冰|

将此行修复为:

function_list1.append((lambda x,y=i: values_list[y][x]))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章