谁能帮我一个这个?
我正在尝试找到一种方法来计算 2 个整数列表之间的范围;并获得从一个列表到下一个列表所需的每一步
使用这两个数组:
a = [1,1,1]
b = [3,4,3]
我想达到一系列中间值:
[[2,2,2], [None,3,None]]
谢谢
谁能帮我一个这个?
我正在尝试找到一种方法来计算 2 个整数列表之间的范围;并获得从一个列表到下一个列表所需的每一步
使用这两个数组:
a = [1,1,1]
b = [3,4,3]
我想达到一系列中间值:
[[2,2,2], [None,3,None]]
谢谢
这很简单,itertools.zip_longest()
列表理解也很简单:
>>> import itertools
>>> list(itertools.zip_longest(*[range(i+1, j) for i, j in zip(a, b)]))
[(2, 2, 2), (None, 3, None)]
请注意,在 2.xitertools.zip_longest()
中不存在 - 它被调用itertools.izip_longest()
。
这可以通过zip()
将值组合在一起来获得边界,然后生成我们需要的范围(在下限上加一个,因为您似乎不想包含它),然后我们将它们分成几部分,使用itertools.zip_longest()
(也介绍None
价值观)。
在 izip_longest 不可用的 python 2.5 及以下版本中工作的 Lattywares Answer 的变体:
map(None, *[range(x + 1, y) for x, y in zip(a, b)])