求助各位大神, 如何将(a,(b,(c,(d,(e,(f))))))转换为(f,(e,(d,(c,(b,(a))))))

2018-03-17 16:21:41 +08:00
 koplyp
8202 次点击
所在节点    Python
68 条回复
fortunezhang
2018-03-19 14:33:22 +08:00
str1 = '(a,(b,(c,(d,(e,(f,g)))))))'
str1 = str1.replace(')', ' ').replace('(', ' ').replace(',', ' ')
str1 = str1[::-1].split()
str1 = '(' + ',('.join(str1) + ')' * len(str1)
print(str1)
gowl
2018-03-19 16:27:54 +08:00
@Antidictator 多谢~
gowl
2018-03-19 16:29:33 +08:00
gowl
2018-03-19 16:30:15 +08:00
dizzy
2018-03-19 16:43:39 +08:00
@param 请问手机上使用 ipython 是什么软件?
param
2018-03-19 19:48:36 +08:00
@dizzy termux
tihiro
2018-03-20 19:50:43 +08:00
def get_elements(s):
q = []
while len(s) != 1:
q.append(s[0])
s = s[1]
q.append(s)

return q


def nested_list(l):
res = ()
ele0 = l[0]
res += (ele0, )
l.remove(ele0)
if len(l) > 0:
res += ((nested_list(l), ))

return res


def main():
s = ('a', ('b', ('c', ('d', ('e', ('f'))))))
l = get_elements(s)
l = l[::-1]
ll = nested_list(l)
print(ll)


if __name__ == '__main__':
main()
xiongshengyao
2018-03-26 15:42:41 +08:00
最简单的思路…一个队列一个栈
```
def main(source_str):
el = []
ret = []
for i in source_str:
if i not in ('(', ',', ')'):
el.append(i)
ret.append("#")
else:
ret.append(i)

for index, value in enumerate(ret):
if value == "#":
ret[index] = el.pop()

return "".join(ret)


if __name__ == "__main__":
result = main("(a,(b,(c,(d,(e,(f))))))")
print(result)
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/438930

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX