微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决通过迭代器定义的函数列表包含一堆相同函数的副本

我想创建一个函数列表,每个函数都定义在集合 {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]))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。