【发布时间】:2014-04-28 07:28:59
【问题描述】:
假设您被限制使用外部函数,例如 zip 或任何 itertool,您如何通过包含多个迭代器/生成器的参数交替迭代,以便打印每个的第一个索引,然后分别打印第二个、第三个等。
def function(*arguments):
for a in arguments:
iterator = iter(a)
yield next(a)
我一直在试图找出一种方法来找到每个可迭代对象上每个值的下一个索引。到目前为止,我能够打印每个索引的第一个索引,但是在尝试使用 while 循环的 Try 和 except 语句之后,我对如何实现下一步感到困惑。我也对StopIteration 异常在这种情况下如何工作感到困惑。
例如以如下方式使用此函数:
for i in function('123', '4567', '89XY'):
print(i,end='')
将打印:
1,4,8,2,5,9,3,6,X,7,Y
【问题讨论】:
-
Assuming that your are restricted from using outside functions such as zip or any itertool- 为什么? -
您也不想使用
range之类的东西吗? -
你至少可以看看
roundrobinrecipe fromitertools;它可以满足您的需求,您可以尝试使用为相关itertools函数提供的纯 python 等效项来修改它 -
'在不使用 zip() 的情况下实现 zip()' 但是为什么呢?这只是代码高尔夫吗?
标签: python