为什么 replace () 不改变所有出现的地方?
Why doesn't replace () change all occurrences?
我有以下代码:
dna = "TGCGAGAAGGGGCGATCATGGAGATCTACTATCCTCTCGGGGTATGGTGGGGTTGAGA"
print(dna.count("GAGA"))
dna = dna.replace("GAGA", "AGAG")
print(dna.count("GAGA"))
替换不会替换所有出现的地方。有人可以帮助我理解为什么会这样吗?
它取代了所有出现的地方。这可能会导致新的事件发生(看看你的替换字符串!)。
我会说,从逻辑上讲,一切都很好。
您可以重复此 replace
while dna.count("GAGA") > 0
,但是:这听起来不像您 应该 做的。 (我敢打赌你真的只想做一轮替换来模拟特定的事情发生。虽然你根本不是遗传学专家。)
“直到用尽”才会发生替换;当一个子字符串与原始 字符串中的 匹配时,它们就会出现。
从您的字符串中考虑以下内容:
>>> a = "TGCGAGAA"
>>> a.replace("GAGA", "AGAG")
'TGCAGAGA'
>>>
替换不会再次发生,因为原始字符串在该位置不匹配GAGA
。
如果你想一直替换直到找不到匹配项,你可以将它包装在一个循环中:
>>> while a.count("GAGA") > 0: # you probably don't want to use count here if the string is long because of performance considerations
... a = a.replace("GAGA", "AGAG")
...
>>> a
'TGCAAGAG'
它确实进行了所有替换(这就是 .replace()
在 Python 中所做的,除非另有说明),但其中一些替换无意中引入了 GAGA 的新实例。取字符串的开头:
TGCGAGAA
索引 3-6 有 GAGA。如果将其替换为 AGAG,则会得到
TGCAGAGA
所以那个 AGAG 的最后一个 G,连同之前已经存在的后续 A,形成了一个新的 GAGA。
我有以下代码:
dna = "TGCGAGAAGGGGCGATCATGGAGATCTACTATCCTCTCGGGGTATGGTGGGGTTGAGA"
print(dna.count("GAGA"))
dna = dna.replace("GAGA", "AGAG")
print(dna.count("GAGA"))
替换不会替换所有出现的地方。有人可以帮助我理解为什么会这样吗?
它取代了所有出现的地方。这可能会导致新的事件发生(看看你的替换字符串!)。
我会说,从逻辑上讲,一切都很好。
您可以重复此 replace
while dna.count("GAGA") > 0
,但是:这听起来不像您 应该 做的。 (我敢打赌你真的只想做一轮替换来模拟特定的事情发生。虽然你根本不是遗传学专家。)
“直到用尽”才会发生替换;当一个子字符串与原始 字符串中的 匹配时,它们就会出现。
从您的字符串中考虑以下内容:
>>> a = "TGCGAGAA"
>>> a.replace("GAGA", "AGAG")
'TGCAGAGA'
>>>
替换不会再次发生,因为原始字符串在该位置不匹配GAGA
。
如果你想一直替换直到找不到匹配项,你可以将它包装在一个循环中:
>>> while a.count("GAGA") > 0: # you probably don't want to use count here if the string is long because of performance considerations
... a = a.replace("GAGA", "AGAG")
...
>>> a
'TGCAAGAG'
它确实进行了所有替换(这就是 .replace()
在 Python 中所做的,除非另有说明),但其中一些替换无意中引入了 GAGA 的新实例。取字符串的开头:
TGCGAGAA
索引 3-6 有 GAGA。如果将其替换为 AGAG,则会得到
TGCAGAGA
所以那个 AGAG 的最后一个 G,连同之前已经存在的后续 A,形成了一个新的 GAGA。