我正在使用一些使用itertools.imap
生成的迭代器,我在想是否有一种方法可以访问for-loop
中的迭代器长度,我用它来循环元素。你知道吗
我可以肯定的是,迭代器不会生成无限量的数据。你知道吗
另外,因为我循环的信息是从查询到数据库的,所以我可以从那里得到信息的长度,但是我使用的函数必须返回一个迭代器。你知道吗
我想到了一些选择:
def iterator_function(some, arguments, that, I, need):
query_result = query()
return_iterator = itertools.imap(
mapping_function,
query_result
)
return return_iterator
因为我无法更改返回的迭代器,所以我想到了一些东西(非常难看),比如:
query_result = query()
query_size = len(query_result)
return_iterator = itertools.imap(
lambda item: (mapping_function(item), query_size),
query_result
)
return return_iterator
但我不太喜欢这个选项,我在想,在Python中,是否有一种方法可以从循环中获取迭代器的大小,比如:
for item in iterator():
print item.iterator_length()
# do other stuff
或者类似于:
for item in iterator():
print iterator.length() # or iterator().length()???
谢谢!你知道吗
我不知道我的想法是否正确,但是class generator pattern 并尝试添加序列bahaviour:
像这样:
假设你有一个很好的数据库,在那里进行计数。怀疑python中的任何解决方案都会更快/更干净。你知道吗
相关问题 更多 >
编程相关推荐