我正在尝试用 Python 编写一个脚本,该脚本接受一个字符串并通过迭代移动原始序列中的字母来返回一个字符串列表。
例如:ACGT-->TACG-->GTAC-->CGTA-->STOP(原序列)
我是编程初学者,这是我成功做到的事情
liste=[]
seq=list('ACGT')
nseq=list("test")
while nseq!=seq:
for i in range (0, len(seq)):
nseq[i]=seq[i-1]
''.join(nseq)
liste.append(nseq)
它像TACG一样只返回第一步,不会继续下去。
输出:['T', 'A', 'C', 'G']
多次(无限循环)
预期输出:
TACG
GTAC
CGTA
最佳答案
基本上,您需要将最后一个元素移到开头,直到到达原始序列。为此 collections.deque
它是 rotate()
方法(相当于 d.appendleft(d.pop())
)应该是最有效的:
from collections import deque
def rotations(s):
yield s
d = deque(s)
for _ in range(len(d) - 1):
d.rotate(1)
yield ''.join(d)
演示:
>>> for r in rotations('ACGT'):
... print(r)
...
ACGT
TACG
GTAC
CGTA
关于python - 迭代地改变一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50101119/