如何解决为什么 Python 中这段代码中的最终列表为空?
我已经用 Python 编写了这段代码来创建一个嵌套的 list
,但是为什么在第二种情况下最终列表是空的?
在这种情况下,list
不为空:
代码:
list_of_items = [1,2,3,4,5,6,7,8,9,10]
def square(x):
return x*x
def cube(x):
return x*x*x
func_list = [square,cube]
final_2 = []
for i in range(10):
var_list = list(map(lambda x: x(i),func_list))
final_2.append(var_list)
print(final_2)
输出:
[[0,0],[1,1],[4,8],[9,27],[16,64],[25,125],[36,216],[49,343],[64,512],[81,729]]
现在,当我在每次迭代中清除 var_list
时(虽然它应该会影响 final_2
)然后输出为空!!
代码:
list_of_items = [1,func_list))
final_2.append(var_list)
var_list.clear()
print(final_2)
输出:
[[],[],[]]
如果附加列表充当 pointer
,那么为什么在第一种情况下最终列表没有改变,因为 var_list
在每次迭代中都在改变,clear()
做了什么到最后变成空的列表?
解决方法
您需要追加 var_list 的副本,而不是 var_list 本身,因为您在追加后清除 var_list。
from copy import copy
#########
#your code here
#########
for i in range(10):
var_list = list(map(lambda x: x(i),func_list))
final_2.append(copy(var_list))
var_list.clear()
,
只是不要清除列表。你为什么要这样做?
for i in range(10):
var_list = list(map(lambda x: x(i),func_list))
final_2.append(var_list)
你第二次做对了。
实际上,您根本不需要为列表命名:
for i in range(10):
final_2.append(list(map(lambda x: x(i),func_list)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。