如果我有多个iterables作为参数,那么有没有什么方法可以让代码继续执行列表中的一个?你知道吗
我不能使用任何切片、len()或任何itertools。你知道吗
这是我迄今为止尝试过的,我知道这是完全错误的,但我就是想不出来。你知道吗
def together(*args):
iterator = [iter(item) for item in args]
my_list = []
while True:
for i in iterator:
try:
lst.append(next(i))
print(next(i))
except StopIteration:
return
if '__next__' == None:
yield tuple(None)
else:
yield tuple(my_list)
my_list = []
这是我目前的结果,iter确实存储了b,g,i,但它只打印出第一个列表:
[('a', 'f', 'h')]
得到这样的结果最好的方法是什么? Resutls是列表中的元组,当参数iterables用完时,它将被Nones替换。你知道吗
[('a', 'f', 'h'), ('b', 'g', 'i'), ('c', None, 'j'), ('d', None, 'k'), ('e', None, None)]
我知道StopIteration错误出现在('b','g','I')之后,但是有没有什么方法可以忽略并继续使用不同的列表?你知道吗
输入如下:
[v for v in together(disguise('abcde'), disguise('fg'), disguise('hijk'))]
伪装功能如下所示:
def disguise(items):
for v in items:
yield v
任何建议或帮助将不胜感激!你知道吗
可以使用
next
的第二个参数让next
在给定迭代器耗尽时返回默认值,而不是引发StopIteration
异常:以便:
退货:
相关问题 更多 >
编程相关推荐