python - 将带有两个参数的函数传递给 python 中的 filter()

标签 python list python-2.7

给定以下列表:

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)

关于python - 将带有两个参数的函数传递给 python 中的 filter(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34609935/

相关文章:

python - 保存到文件并加载 python 类的实例及其属性

list - 如何在Scala中通过相同元素合并元组

python - 如何从具有相同第二个值的元组列表中获取那些元组?

python-2.7 - 如何使用 Google Sheets API V4 导入 CSV 文件

python - Django 不想在迁移中包含模型 - PostgreSQL

python - 如果有两个以上唯一值,则过滤 df - pandas

Python/Scipy "invalid index to scalar variable"

如果值不存在,Python 字典返回请求的键

python - 是否可以将交互式 python 窗口链接到正在运行的 jupyter notebook 内核?

java - 如何从Java中的列表初始化变量?