2013-03-11 59 views
0

任何人都可以帮我一个吗?两个列表之间的范围

我想找到一种方法来计算整数2列表之间的范围;和以获取必要的每个步骤,以从一个列表到下一个接着

使用这些2个数组:

a = [1,1,1] 

b = [3,4,3] 

我想到达的值在两者之间的序列:

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

感谢 一个

+1

值得一提的这些名单,不是数组。 – 2013-03-11 17:57:06

回答

1

的Lattywares回答在Python 2.5及以下工程时izip_longest不适的变化:

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

请注意,这在3.x中不起作用,并且可读性较差,所以在2.5或之前使用它只是一个好主意(并且一般来说,没有太多充分的理由可以使用这种过时的版)。 – 2013-03-11 22:02:20

+0

@Lattyware,是的,但有时你别无选择 - 例如,2.5仍然是当前稳定的jython版本。 – l4mpi 2013-03-11 22:14:38

+0

哇,真的吗?我不知道Jython是如此落后,当我在3.3之前陷入困境时,我感到很恼火,更别提2.7之前的版本了。 – 2013-03-12 01:28:54

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值)。

+0

不错,比我的好多了。 – 2013-03-11 17:52:50

+0

欢呼!这很有帮助 – 2013-03-11 19:57:34

相关问题