python - 迭代地改变一个字符串

标签 python string

我正在尝试用 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/

相关文章:

python - Sentry 不显示 tastypie 错误消息

python - os.path.abspath 与 os.path.dirname

python - 如何在 torchscript 中使用自定义 python 对象

python - 如何比较两个 numpy 字符串数组与 "in"运算符以使用数组广播获取 bool 数组?

java - 在一串单词中制作一个字符串的更有效方法

python - Django:从根目录开始的多个 url 模式分布在文件中

python - pretty-print 整个 Pandas Series/DataFrame

在我的 char 指针末尾添加了 C++ 奇怪的编码字符

Ruby:按字母顺序对包含一些字符串数组的字符串数组进行排序

python - 用python替换odb中的状态变量名称