2024-04-25 01:34:40 发布
网友
我正在从“a、b、c、d”源中刮取相同类型数据的n次迭代,但有时这些数据源中的一个返回的值小于n,因为它没有太多可从中提取的值(例如,我将设置limit=5,但c将只有3个值可从中刮取)
n
limit=5
c
问题是,我通过跳过每一个n值来组织列表中返回的数据,因此如果其中一个值在无法提取任何内容时不返回至少一个空填充行,则会弄乱模式
您可以为生成器编写一个保证结果的包装器,即使该结果是None:
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]
不过,可能有一个更好的解决方案,可以通过稍微重新组织代码来实现
您可以为生成器编写一个保证结果的包装器,即使该结果是
None
:或者,通过一个强制执行长度的函数传递5个结果块
不过,可能有一个更好的解决方案,可以通过稍微重新组织代码来实现
相关问题 更多 >
编程相关推荐