0

谁能帮我一个这个?

我正在尝试找到一种方法来计算 2 个整数列表之间的范围;并获得从一个列表到下一个列表所需的每一步

使用这两个数组:

a = [1,1,1]

b = [3,4,3]

我想达到一系列中间值:

[[2,2,2], [None,3,None]]

谢谢

4

2 回答 2

4

这很简单,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价值观)。

于 2013-03-11T17:52:06.110 回答
1

在 izip_longest 不可用的 python 2.5 及以下版本中工作的 Lattywares Answer 的变体:

map(None, *[range(x + 1, y) for x, y in zip(a, b)])
于 2013-03-11T17:53:41.427 回答