Skip to main content
 首页 » 编程设计

python之用计数替换嵌套列表中的元素

2025年05月04日22mayingbao

我有一个嵌套列表:

x=[[[0, 1, 2], [0, 1, 2]], [[0, 1], [0, 1, 2]], [[0]], [[0, 1], [0, 1, 2, 3, 4]]] 

现在,目标是获得一个嵌套列表具有相同的结构,但元素替换为它们的“全局”计数。因此,所需的输出应如下所示:

y=[[[0, 1, 2], [3, 4, 5]], [[6, 7], [8, 9, 10]], [[11]], [[12, 13], [14, 15, 16, 17, 18]]] 

在过去的几个小时里,我一直在与它抗争,但没有成功。

理想情况下,我希望有一个能够处理任意深度嵌套的通用解决方案。

如有任何帮助,我们将不胜感激。提前致谢!

请您参考如下方法:

这是一个递归解决方案,它就地进行替换并依赖于被替换元素的 type。这个想法是跟踪“全局计数器”并将其传递给递归调用,以便它知道用什么替换元素:

x = [[[0, 1, 2], [0, 1, 2]], [[0, 1], [0, 1, 2]], [[0]], [[0, 1], [0, 1, 2, 3, 4]]] 
 
def replace(lst, i): 
    for j in range(len(lst)): 
        if isinstance(lst[j], list): 
            lst[j], i = replace(lst[j], i) 
        else: 
            lst[j] = i 
        i += 1 
    return lst, i - 1 
 
replace(x, 0) 
print(x) 
# [[[0, 1, 2], [3, 4, 5]], [[6, 7], [8, 9, 10]], [[11]], [[12, 13], [14, 15, 16, 17, 18]]]