【发布时间】:2015-07-08 00:22:46
【问题描述】:
我的教授希望我们编写一个以 *args 作为参数的生成器,并生成第一个参数的第一个值,然后是第二个参数的第一个值,然后是第三个参数的第一个值。完成后,它会产生第一个的第二个值,第二个的第二个值,等等。
我在遍历可迭代对象时遇到了一些麻烦,因为它们的长度不同。因此,虽然一个可迭代对象的长度可能为 4,但另一个可迭代对象的长度可能为 2,因此尝试产生两者的第三个值会导致错误。
我希望生成器在遇到一个已用完要迭代的值的参数时停止。
编辑:这是我目前所拥有的......
temp = list(args)
while True:
for x in range(len(temp)):
for letters in args:
yield next(letters)
现在它给了我一个 Type Error: 'str' object is not an iterator 当我尝试运行这一行时...
[print(i) for i in alternate('abcde', 'fg', 'hijk')]
我不允许使用 zip 或任何其他导入。
该函数可以接受字符串和可迭代对象作为参数
【问题讨论】:
-
"我不允许使用 zip 或任何其他导入。"
zip()是内置的,而不是导入的。还禁止吗?
标签: python generator yield iterable