替换字符串中的值而不替换新值

时间:2019-02-09 06:20:15

标签: python

我正在创建一个称为L系统的分形,它使用一种伪递归替换方法。我需要将每个字母的所有出现都替换为其键,但是一次只能替换一次。例如,我们从字符串开始

    AXIOM = "f"

我们有字典

    rule_dict = {"f":"h-f-h", "h":"f+h+f"}

我们在连续的迭代中将此规则应用于公理,这样我们就可以看到这样的进展

    "f"
    "h-f-h"
    "f+h+f-h-f-h-f+h+f"

等等。

我的初始方法只是使用了这样的for循环:

    for i in range(GENERATION):
        for key in rule_dict.keys():
            axiom = axiom.replace(key, rule_dict[key])

此方法的问题在于,一旦它在第一次迭代中替换了“ f”,便会检查“ h”,从而导致替换了“ h”字符,直到下一代它们才受影响。

我宁愿避免简单地创建一个重复的字符串来使用,并且想知道是否有人知道一种有效的方法来处理此问题。该程序在某种程度上对内存敏感,因为它是一种递归。因此,如果可能的话,我想尽量减少内存使用。感谢您的帮助!

0 个答案:

没有答案