Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';在<;字符串>';需要字符串作为左操作数而不是列表_Python - Fatal编程技术网

Python ';在<;字符串>';需要字符串作为左操作数而不是列表

Python ';在<;字符串>';需要字符串作为左操作数而不是列表,python,Python,我的输入文件如下所示: >seq_1 ATTAGACCTG >seq_2 CCTGCCGGAA >seq_3 AGACCTGCCG >seq_4 GCCGGAATAC 我编写了以下代码以获得通用超弦: from itertools import permutations def parse_fasta (lines): descs = [] seqs = [] data = '' for line in lines: if line.startswith('&

我的输入文件如下所示:

>seq_1
ATTAGACCTG
>seq_2
CCTGCCGGAA
>seq_3
AGACCTGCCG
>seq_4
GCCGGAATAC
我编写了以下代码以获得通用超弦:

from itertools import permutations

def parse_fasta (lines):
descs = []
seqs = []
data = ''
for line in lines:
    if line.startswith('>'):
        if data:
            seqs.append(data)
            data = ''
        descs.append(line)
    else:
        data += line.rstrip('\r\n')
seqs.append(data)
return descs, seqs

descriptions, sequences = parse_fasta(open('D:\python\input.fasta', 'r').read().split('\n'))

def solve(*strings):
"""
Given a list of strings, return the shortest string that contains them all.
"""
return min((simplify(p) for p in permutations(strings)), key=len)

def prefixes(s):
"""
Return a list of all the prefixes of the given string (including itself),
in ascending order (from shortest to longest).
"""
return [s[:i+1] for i in range(len(s))]
return [(i,s[:i+1]) for i in range(len(s))][::-1]

def simplify(strings):
"""
Given a list of strings, concatenate them wile removing overlaps between
successive elements.
"""
ret = ''
for s in strings:
    if s in ret:
        continue
    for i, prefix in reversed(list(enumerate(prefixes(s)))):
        if ret.endswith(prefix):
            ret += s[i+1:]
            break
    else:
        ret += s
return ret

print solve(sequences)  
我得到的错误如标题所示。当我给予

print solve('ATTAGACCTG','CCTGCCGGAA','AGACCTGCCG','GCCGGAATAC')
我得到了正确的输出。但是我想把我的输入作为程序中显示的文件。希望得到这样的结果:

ATTAGACCTGCCGGAATAC

请修复代码的标识。在
前缀中有两个连续返回。那不行。另外,你能解释一下你想要实现的算法吗?我删除了一个return语句,但仍然得到相同的错误解释一下算法,我会看一看。代码中给出了解释。