1
def myzip(*iterables):
l = []
t = tuple()
x = [iter(a) for a in iterables]
while True:
for a in x:
for i in range(3):
t = t + tuple(a)
l.append(t)
for x in l:
yield x
我需要写myzip发电机接受任意数目iterables的(呼叫数n)它在产生所述第一值的n元组每个可迭代的,每个可迭代的第二个值等;如果一个迭代在所有其他迭代之前耗尽,那么它在n元组中的位置应该存储None。发生器占据N iterables并产生所述第一值的n元组中的每个迭代
例如:
for i in myzip('abcde','fg','hijk'):
print(i,end='')
打印5 3元组('a','f','h')('b','g','i')('c',None,'j')('d',None,'k')('e',None, None)
。
由于某些原因,我的程序失败了,它没有产生任何东西。
你的'yield'语句不在'while True'循环中,所以它永远不会产生。 – sytech
我附加列表中的所有内容,并从列表中获得收益 – chenyinuo
不,请仔细查看缩进情况。循环'for x in l'永远不会发生,因为它在'while True'循环之外。 – sytech