如何在Python中创建迭代器管道?
有没有什么库或者推荐的方法可以在Python中创建一个迭代器管道?
比如说:
>>>all_items().get("created_by").location().surrounding_cities()
我还想能够访问迭代器中对象的属性。在上面的例子中,all_items()
返回一个物品的迭代器,而这些物品有不同的创建者。
接着,.get("created_by")
就可以获取这些物品的 "created_by" 属性(也就是创建这些物品的人),然后 location()
会返回每个人所在的城市,接着把这些城市传给 surrounding_cities()
,这个函数会返回每个城市周围的所有城市的迭代器(所以最后的结果就是一个包含许多周围城市的大列表)。
3 个回答
1
在你的例子中,其实你只有两个迭代器方法,分别是 all_items
和 surrounding_cities
,所以你可以用 itertools.chain
来很好地处理这些:
from itertools import chain
cities = chain.from_iterable(
item.get("created_by").location().surrounding_cities() for item in all_items()
)
这样一来,cities
就会是一个迭代器,列出所有与这些项目相关的周边城市。
4
你是不是只是在处理一个迭代器呢?在Python中,使用迭代器最自然的方式就是用for循环:
for item in all_items():
item.get("created_by").location().surrounding_cities()
还有其他的写法,比如列表推导式,这种方式在你想生成一个列表作为输出时通常会更合适。