给出以下列表:
DNA_list = ['ATAT', 'GTGTACGT', 'AAAAGGTT']
我想过滤长度超过3个字符的字符串。我使用以下代码实现了这一点:
与for循环:
long_dna = []
for element in DNA_list:
length = len(element)
if int(length) > 3:
long_dna.append(element)
print long_dna
但是我希望我的代码更加通用,因此以后可以过滤任何长度的字符串,因此我使用了一个函数和for循环:
def get_long(dna_seq, threshold):
return len(dna_seq) > threshold
long_dna_loop2 = []
for element in DNA_list:
if get_long(element, 3) is True:
long_dna_loop2.append(element)
print long_dna_loop2
我想使用相同的通用性,filter()
但是我无法实现。如果我使用上面的函数get_long()
,当我将它与一起使用时,我根本无法传递参数filter()
。只是不可能还是有办法解决吗?
我filter()
针对特定情况的代码:
def is_long(dna):
return len(dna) > 3
long_dna_filter = filter(is_long, DNA_list)
使用lambda
提供的门槛,就像这样:
filter(lambda seq: get_long(seq, 3),
dna_list)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句