提问人:eth 提问时间:11/17/2022 最后编辑:eth 更新时间:11/17/2022 访问量:53
如何在 Python 中对许多嵌套列表中的项目执行函数
how to execute a function on items in many nested lists in python
问:
我想在 python 中遍历大量嵌套列表,并以递归方式树化到其他列表中。列表将采用常规格式。例如,我想在不展平大列表的情况下制作另一个嵌套列表。[[1, [2, [3, [4, 5]]]], [7, [8, [9, [10, 11]]]]]
预期输出:[[1, [2, [3, [4, [5, x]]]]], [7, [8, [9, [10, [11, y]]]]]]
我尝试了函数递归,并制作了函数 getChildren():
def getChildren(list):
for item in list:
item = [item, item + 1]
return list
我相信我离得很近。我想这样做很多次,直到“底部”的值。 到目前为止,这是我的代码:
while True:
layer = []
for item in list:
item = getChildren(item)
layer.append(item)
list.append(layer)
但它并没有按预期工作。有什么帮助吗?
答:
0赞
Claudio
11/17/2022
#1
尝试:
L = [[1, [2, [3, [4, 5]]]], [7, [8, [9, [10, 11]]]]]
def getChildren(L):
for indx, value in enumerate(L):
if isinstance(value, list):
getChildren(value)
else:
L[indx] = [value, value + 1]
getChildren(L)
print(L)
给:
[[[1, 2], [[2, 3], [[3, 4], [[4, 5], [5, 6]]]]], [[7, 8], [[8, 9], [[9, 10], [[10, 11], [11, 12]]]]]]
或
L = [[1, [2, [3, [4, 5]]]], [7, [8, [9, [10, 11]]]]]
def getChildren(L):
if isinstance(L[1], list):
getChildren(L[1])
else:
L[1] = [ L[1], L[1]+1 ]
getChildren(L[0])
getChildren(L[1])
print(L)
这给了:
[[1, [2, [3, [4, [5, 6]]]]], [7, [8, [9, [10, [11, 12]]]]]]
[[1, [2, [3, [4, [5, [6, 7]]]]]], [7, [8, [9, [10, [11, [12, 13]]]]]]]
[[1, [2, [3, [4, [5, [6, [7, 8]]]]]]], [7, [8, [9, [10, [11, [12, [13, 14]]]]]]]]
上一个:嵌套列表的递归函数
评论
list
list
list