任何人都可以帮助我吗?
我试图找到一种方法来计算2个整数列表之间的范围;并获得从一个列表到下一个列表所需的每个步骤
使用这两个数组:
a = [1,1,1]
b = [3,4,3]
我想要达到一系列中间值:
[[2,2,2], [None,3,None]]
由于 一个
答案 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)])