Python3中的filter
函数允许我们从Iterable
返回与过滤器函数中定义的任意条件相匹配的元素。我希望能够做类似的事情,除了返回满足条件的元素外,我想返回元素的索引。(类似于用于index
对象的list
方法)
>>> stuff = ("foo", "bar", "baz")
>>> f = filter(lambda x: x == "baz", stuff)
>>> [e for e in f]
['baz'] # Here I want the integer 2 because "baz" is at index 2
当然,我意识到在这个微不足道的例子中,我可以说:
stuff = ["foo", "bar", "baz"]
index = stuff.index("baz")
但重点是,我希望能够使用任意筛选函数和任意Iterable(不仅仅是列表)获得索引!
有没有一种不需要手动操作的方便的方法呢?
发布于 2013-03-23 11:48:05
我会用一个清单理解:
>>> [i for i,x in enumerate(stuff) if x == "baz"]
[2]
或生成器表达式:
>>> gen = (i for i,x in enumerate(stuff) if x == "baz")
>>> list(gen)
[2]
https://stackoverflow.com/questions/15591286
复制相似问题