是否可以多次遍历列表?基本上,我有一个字符串列表,我正在寻找最长的超字符串。列表中的每个字符串都有至少一半长度的重叠,并且它们的大小都相同。我想看看我添加到的超字符串是从列表中的每个序列开始还是结束,当我找到一个匹配项,我想将该元素添加到我的超字符串中,从列表中删除该元素,然后一次又一次地循环它,直到我的列表为空。
sequences=['ATTAGACCTG','CCTGCCGGAA','AGACCTGCCG',''GCCGGAATAC']
halfway= len(sequences[0])/2
genome=sequences[0] # this is the string that will be added onto throughout the loop
sequences.remove(sequences[0])
for j in range(len(sequences)):
for sequence in sequences:
front=[]
back=[]
for i in range(halfway,len(sequence)):
if genome.endswith(sequence[:i]):
genome=genome+sequence[i:]
sequences.remove(sequence)
elif genome.startswith(sequence[-i:]):
genome=sequence[:i]+genome
sequences.remove(sequence)
'''
elif not genome.startswith(sequence[-i:]) or not genome.endswith(sequence[:i]):
sequences.remove(sequence) # this doesnt seem to work want to get rid of
#sequences that are in the middle of the string and
#already accounted for
'''
当我不使用最终的 elif 语句并给我正确的答案 ATTAGACCTGCCGGAATAC 时,这有效。但是,当我使用更大的字符串列表执行此操作时,我仍然会在列表中留下我希望为空的字符串。如果我只是在寻找要添加到超字符串前后的字符串(我的代码中的基因组),那么最后一个循环也是必要的。