是否有用于在Python中创建迭代器管道的库或推荐方法?
例如:
>>>all_items().get("created_by").location().surrounding_cities()
我还希望能够访问迭代器中对象的属性。在上面的示例中,all_items()
返回项的迭代器,并且项具有不同的创建者。
.get("created_by")
然后返回项目(即人员)的“created_by”属性,然后location()
返回每个人的城市,然后将其传送到surrounding_cities()
,它返回每个位置的周围城市的所有迭代器(因此最终结果是周围城市的大型列表)。
答案 0 :(得分:4)
你不只是在处理迭代器吗?在Python中使用迭代器的自然方法是for循环:
for item in all_items():
item.get("created_by").location().surrounding_cities()
还有其他可能性,例如列表推导可能会更有意义,这取决于您正在做什么(如果您尝试生成列表作为输出,通常会更有意义。)
答案 1 :(得分:1)
我建议您查看如何使用coroutines in python实现管道,更具体地说是pipe example
如果您根据上面的示例实现了您的功能,那么您的代码将是这样的(为简单起见,我想您将要打印这些城市):
all_items(get_location(get_creators(get_surrounding_cities(printer()))))
答案 2 :(得分: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
将是一个迭代器,列出项目的所有周边城市