我正在编写一个函数,它在迭代器、int和结尾处添加一个padding,如果被迭代的值小于n个。。我能够让函数完全为迭代器参数工作,如果不是generator类型,那么它将引发typeerror异常,我将在代码块中处理生成器。问题是,我能够在生成器中生成所有值,但我无法找到在末尾添加填充的方法,因为外部for循环会干扰。我需要通过调用iter和next来实现这一点,我一直在玩,但它一直没有工作。。。这是我要解释的函数
def n_with_pad(iterable,n,pad=None):
for i in range(n):
try:
yield iterable[i]
except IndexError:
yield pad
except TypeError:
for i in iterable:
yield i
正如我所说的那样
^{pr2}$我会打印:“f”“u”“n”
但是在pad中添加值小于n的iterables将打印如下
for i n_with_pad('abcdefg',10,'?'):
print(i,end=' ')
‘a’、‘b’、‘c’、‘d’、‘e’、‘f’、‘g’、‘?’, '?' 还有“?”在
第二个电话我都能接了 “a”、“b”、“c”、“d”、“e”、“f”、“g” 到目前为止,我有代码,但似乎不能添加???满足n值
我认为尝试
__getitem__
方法并返回迭代器协议没有任何好处。只需使用iterable,这甚至是变量的名称!在演示:
^{pr2}$相关问题 更多 >
编程相关推荐