Skip to main content
 首页 » 编程设计

python之将平面列表转换为嵌套列表

2025年05月04日17EasonJim

使用Python

我想要以下内容:

[1, 2, 2, 1, 2, 3, 2, 3] 

转化为:

[1, 2, 2, [1, 2, 3], 2, 3] 

规则:遍历列表中的每个项目。如果我们点击 2 后跟 1 创建一个列表,并将该 1 包含在该列表中,直到我们点击 3,包括该 3,然后关闭列表并继续。这就像 1 是 3 是括号。

我不太擅长递归算法,我认为在这种情况下可能需要递归算法。

一如既往的感谢。

请您参考如下方法:

请记住,@Walter 在他对您的问题的评论中是正确的,这是您要求的愚蠢实现,灵感来自您问题的最后一点,您在其中建议 1 和 3 可以替换为 [1 和 3]。

>>> import re 
>>> s = repr([1, 2, 2, 1, 2, 3, 2, 3]) 
>>> s = re.sub('1', '[1', s) 
>>> s = re.sub('3', '3]', s) 
>>> l = eval(s) 
>>> l 
[[1, 2, 2, [1, 2, 3], 2, 3]] 

它所做的是处理列表(字符串)的表示,并使用正则表达式替换您建议的方式。最后,它评估字符串(取回列表)。

我称此实现为“愚蠢的”,因为它可以解决问题,但它很丑陋且真正非 Pythonic。也就是说,它确实有效,所以如果您只是将它用于一次性转换您需要使用的某些数据...

喂!