任何人都可以帮我一个吗?两个列表之间的范围
我想找到一种方法来计算整数2列表之间的范围;和以获取必要的每个步骤,以从一个列表到下一个接着
使用这些2个数组:
a = [1,1,1]
b = [3,4,3]
我想到达的值在两者之间的序列:
[[2,2,2], [None,3,None]]
感谢 一个
任何人都可以帮我一个吗?两个列表之间的范围
我想找到一种方法来计算整数2列表之间的范围;和以获取必要的每个步骤,以从一个列表到下一个接着
使用这些2个数组:
a = [1,1,1]
b = [3,4,3]
我想到达的值在两者之间的序列:
[[2,2,2], [None,3,None]]
感谢 一个
的Lattywares回答在Python 2.5及以下工程时izip_longest不适的变化:
map(None, *[range(x + 1, y) for x, y in zip(a, b)])
请注意,这在3.x中不起作用,并且可读性较差,所以在2.5或之前使用它只是一个好主意(并且一般来说,没有太多充分的理由可以使用这种过时的版)。 – 2013-03-11 22:02:20
@Lattyware,是的,但有时你别无选择 - 例如,2.5仍然是当前稳定的jython版本。 – l4mpi 2013-03-11 22:14:38
哇,真的吗?我不知道Jython是如此落后,当我在3.3之前陷入困境时,我感到很恼火,更别提2.7之前的版本了。 – 2013-03-12 01:28:54
这是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
值)。
不错,比我的好多了。 – 2013-03-11 17:52:50
欢呼!这很有帮助 – 2013-03-11 19:57:34
值得一提的这些名单,不是数组。 – 2013-03-11 17:57:06