任何人都可以幫我一個嗎?兩個列表之間的範圍
我想找到一種方法來計算整數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