编辑: 假设我有一串嵌套的圆括号如下:((AB)CD(E(FG)HI((J(K))L)))(假设副词是平衡的,并且正确地括起来 如何递归地删除每个全封闭圆括号子集的第一组全封闭偏旁命题?你知道吗
所以在这种情况下是(ABCD(E(FG)HI(JK))。(AB)会变成AB,因为(AB)是一组闭圆括号中的第一组闭圆括号(从(AB)到K)),E也是一组圆括号中的第一个元素,但因为它没有圆括号,所以什么都不会改变,(J)是集合((J)K)中的第一个元素,因此圆括号会被删除。你知道吗
这类似于构建表达式树,到目前为止,我已经将其解析为嵌套列表,并认为我可以递归地检查每个嵌套列表的第一个元素是否为instance(type(list)),但我不知道如何进行?你知道吗
嵌套列表如下所示:
arr = [['A', 'B'], 'C', 'D', ['E', ['F', 'G'], 'H', 'I', [['J'], 'K']]]
或许可以将其转换为:
arr = [A, B, C, D, [E, [F, G], H, I, [J, K]]
有更好的办法吗?你知道吗
如果我正确理解了这个问题,那么这个丑陋的函数应该可以做到:
请注意,此函数将递归调用自身,直到不存在连续的圆括号。但是,在您的示例((AB)CD(E(FG)HI((J)K)),一个调用就足以产生(ABCD(E(FG)HI(JK))。你知道吗
你需要把你的逻辑简化成足够清晰的程序。我从你的解释中得到的是下面的代码。注意,我没有处理边缘情况:您需要检查None元素,点击列表的末尾,等等
相关问题 更多 >
编程相关推荐