使用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。也就是说,它确实有效,所以如果您只是将它用于一次性转换您需要使用的某些数据...
喂!
