如何使用filter()获取过滤数据的位置而不是值?

时间:2018-06-30 15:35:14

标签: python python-3.x

我正在尝试构建一个图形生成器功能,该功能要求列表中数据的位置。我想使用python的内置过滤器功能获取相关数据位置的列表,而不是其值。可以这样做吗?

我知道还有其他方法可以实现此目的,但是使用Filter()函数可以做到吗?

1 个答案:

答案 0 :(得分:2)

您可以使用enumerate将列表变成两个项目元组的列表,每个元组的第一项是项目的位置(我们通常将其称为位置或索引),并且第二个项目是该位置原始列表中的项目。

以下代码为值大于3的项目过滤[4, 1, 3, 5, 3]的列表,并返回这些项目的位置。

a = [4, 1, 3, 5, 3]
print(list(map(lambda i: i[0], filter(lambda i: i[1] > 3, enumerate(a)))))

这将输出:

[0, 3]