两个列表之间的范围

时间:2013-03-11 17:44:30

标签: python

任何人都可以帮助我吗?

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

使用这两个数组:

a = [1,1,1]

b = [3,4,3]

我想要达到一系列中间值:

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

由于 一个

2 个答案:

答案 0 :(得分:4)

使用itertools.zip_longest()list comprehension

非常简单
>>> import itertools
>>> list(itertools.zip_longest(*[range(i+1, j) for i, j in zip(a, b)]))
[(2, 2, 2), (None, 3, None)]

请注意,在2.x itertools.zip_longest()中不存在 - 而是将其称为itertools.izip_longest()

这可以通过zip()将值组合在一起,这样我们就可以获得边界,然后生成我们需要的范围(在下限中添加一个,因为您似乎不想包含它),然后我们将它们分开使用itertools.zip_longest()(也会引入None值)来分成部分。

答案 1 :(得分:1)

Lattywares答案的一种变体,可以在python 2.5及以下版本中使用izip_longest:

map(None, *[range(x + 1, y) for x, y in zip(a, b)])