考虑以下功能:
def search( seq, start, end ):
state = 0
ret = []
aux = []
for i in seq:
if state == 0:
if i == start:
aux = [i]
state = 1
elif state == 1:
aux.append(i);
if i == end:
ret.append(aux)
state = 0
return ret
search()函数是一个非常基本的双状态机,它使用开始和结束作为定界符来返回子列表的列表.例如:
DNA = ['CGC','UUC','GCU','UUG','GAA','AAU','UUG','UGU','GUU','UUU','UGU',
'GGC','UGC','UCG','CUG','CUC','AAA','UUG','UUC','GCU','GCU','UUU',
'UGU','GUC','CUG','GCU','GCU','UUU','AUU','AUU','AAU','CGC','UGC',
'UUG','GCG','GUU','CUG','UUA','CGC','UGC','UUG','GGC','UUG','UUG',
'UGG','CUU','UGG','UUG','UUU','GUA','UAU','UGA','GCU','GUU','CUU',
'UGG','CUU','UGG','AAU','UUU','GUU','UAU','UAG','GCU','GCU','CUU',
'GUU','GUU','GUU','GCU','UGU','UGU','AAU','GUU','GGC']
print( search( DNA, start='AAU', end='GUU') )
输出:
[['AAU', 'UUG', 'UGU', 'GUU'], ['AAU', 'CGC', 'UGC', 'UUG', 'GCG', 'GUU'], ['AAU', 'UUU', 'GUU'], ['AAU', 'GUU']]
是否可以使用列表推导编写等效函数?