简短版:
如果有x = [[True], [False]]
和n = x[0]
,是否可以/如何仅使用x[0]
将n
设置为整数?
长版:
我正在尝试编写一个使用大量递归列表的体素类型脚本,我想知道是否有=
的替代方法不会覆盖设置为的变量值列表中的项目。
以此为基本示例:
l = [0, [[[2], 0], 0], 0]
path = [1, 0, 0]
cur = l
for i in path
cur = cur[i]
print cur
#[2]
以下是更新列表可以采取的措施的一些示例:
cur.append(3)
print l
#[None, [[[2, 3], 0], 0], 0]
cur[0] = 3
print l
#[0, [[[3], 0], 0], 0]
但是,我希望能够将[2]
值设置为其他值,以便按照上述示例的方式,l
变为[0, [[3, 0], 0], 0]
。有点像下面的代码,显然不起作用:
cur = 3
print l
#[0, [[[2], 0], 0], 0]
我可以再次按下路径,每次只删除一个级别,但是对于5级递归,这将是120次计算,而不是只有5.我认为可能存在某种类型的函数,如{{1}这是内置但不常用的。抱歉,如果这已经有答案,但我不确定要搜索什么。
答案 0 :(得分:0)
您可以做的最好的事情是在处理路径时停一个短片,因此您不是找到cur
,而是找到prev
。然后,您可以使用path
的最后一个索引来修改cur
中的prev
。例如:
l = [0, [[[2], 0], 0], 0]
path = [1, 0, 0]
prev = l
for i in path[:-1]:
prev = prev[i]
prev[path[-1]] = 3
print l
打印:
[0, [[3, 0], 0], 0]
当然,这仅在path
非空时才有效。