python 状态机框架_python-列表理解中的双状态机

考虑以下功能:

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']]

是否可以使用列表推导编写等效函数?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值