gpt4 book ai didi

python - 使用 Python 将字符串标记为嵌套数组列表

转载 作者:行者123 更新时间:2023-11-28 17:36:22 31 4
gpt4 key购买 nike

正在关注 this document我正在为 Brainfuck 编写解释器,在我的实现中需要转换一个字符串,例如:

',>,<[>[->+>+<<]>>[-<<+>>]<<<-]>>.'

进入这样的指令列表:

[',', '>', ',', '<', [ '>', [ '-', '>', '+', '>', '+', '<', '<', ], '>', '>', [ '-', '<', '<', '+', '>', '>', ] '<', '<', '<', '-' ], '>', '>', '.']

或者,减去符号:

[ ... [...] ... [...] ... ]

现在我正在使用 deque 和 popleft() 递归地解决这个问题,一次迭代一个符号的字符串,但我觉得我应该一次将它分解成子数组。

您将如何以 Pythonic 方式解决这个问题?

(出于速度原因排除正则表达式)

最佳答案

这不完全是“Pythonic 方式”,但是......我找到了使用递归和生成器解决问题的方法

s = ',>,<[>[->+>+<<]>>[-<<+>>]<<<-]>>.'

def brainfuck2list(brainfuck):
while brainfuck: #if list is empty then finish
e = brainfuck.pop(0)
if e not in ("[","]"):
yield e
elif e == "[":
yield list(brainfuck2list(brainfuck))
else:
break

[_ for _ in brainfuck2list(list(s))]

你得到以下输出

[
',', '>', ',', '<',
[
'>',
[
'-', '>', '+', '>', '+', '<', '<'
]
, '>', '>',
[
'-','<', '<', '+', '>', '>'
],
'<', '<', '<', '-'
]
, '>', '>', '.'
]

关于python - 使用 Python 将字符串标记为嵌套数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30146569/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com