给定以下列表:
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)
原文由 Homap 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
lambda
提供阈值,如下所示: