当无法达到预定数量时,如何制作 for 循环返回填充线?

  • 本文关键字:for 何制作 循环 返回 填充 python
  • 更新时间 :
  • 英文 :


我正在从‘a、b、c、d’源中抓取相同类型数据的n迭代,但有时其中一个数据源返回的值会小于n,因为它没有那么多可获取的值(例如,我将设置limit=5,但c将只有3个可获取的数值(。

问题是,我通过跳过每一个n值来将返回的数据组织在列表中,因此,如果其中一个值在无法提取任何内容时没有返回至少一个空填充行,则会打乱模式。

您可以为生成器编写一个包装器来保证结果,即使结果是None:

def get_result(source, fillvalue=None):
return next(source, fillvalue)
>>> iterator = iter([1, 2, 3])
>>> [get_result(iterator) for _ in range(5)]
[1, 2, 3, None, None]

或者,通过一个强制长度的函数传递你的5个结果块

def enforce_length(n):
def wrapped(lst):
for _ in range(n):
yield next(lst, None)
return wrapped
enforce_length_5 = enforce_length(5)
>>> list(enforce_length_5([1, 2, 3]))
[1, 2, 3, None, None]

然而,通过稍微重新组织代码,可能会有更好的解决方案。

最新更新