我是新來的python,我想要一些指導我遇到的問題。Python,2個列表之間的所有可能的數字組合
比方說,你有兩個列表,與相同長度和寫滿數字:在相同的位置
x=[0,1,2,3]
y=[0,4,5,6]
如何計算的Python列表中的號碼之間的號碼? 所以這個例子。
[0,1,2,3]
[0,2,2,3]
[0,3,2,3]
[0,4,2,3]
[0,1,3,3]
...
我希望有更多經驗的人對此有所瞭解。
我是新來的python,我想要一些指導我遇到的問題。Python,2個列表之間的所有可能的數字組合
比方說,你有兩個列表,與相同長度和寫滿數字:在相同的位置
x=[0,1,2,3]
y=[0,4,5,6]
如何計算的Python列表中的號碼之間的號碼? 所以這個例子。
[0,1,2,3]
[0,2,2,3]
[0,3,2,3]
[0,4,2,3]
[0,1,3,3]
...
我希望有更多經驗的人對此有所瞭解。
x=[0,1,2]
y=[0,4,5]
from itertools import product
for lst in product(*(range(a, b+1) for a, b in zip(x, y))):
print(lst)
#>>> (0, 1, 2)
#>>> (0, 1, 3)
#>>> (0, 1, 4)
#>>> (0, 1, 5)
#>>> (0, 2, 2)
#>>> (0, 2, 3)
#>>> (0, 2, 4)
#>>> (0, 2, 5)
#>>> (0, 3, 2)
#>>> (0, 3, 3)
#>>> (0, 3, 4)
#>>> (0, 3, 5)
#>>> (0, 4, 2)
#>>> (0, 4, 3)
#>>> (0, 4, 4)
#>>> (0, 4, 5)
zip
取x
和y
併產生(在這種情況下)[(0, 0), (1, 4), (2, 5)]
。
的for a, b in
取每對然後解壓縮到a
和b
,因此對於第二和a = 1
b = 4
。
然後,每個人製作一個range
。它是range(a, b+1)
,因爲範圍中的最後一項被刪除。
你再有範圍的迭代:
[ range(0, 1), range(1, 5), range(2, 6) ]
product
需要一些iterables,使所有可能的組合的迭代。所以,你「解壓」的iterables用「*」操作符,所以product
被稱爲像
product(*[ range(0, 1), range(1, 5), range(2, 6) ])
這相當於
product(range(0, 1), range(1, 5), range(2, 6))
和產生的結果。
是的,這正是我需要的。非常感謝你! – FUBARnl
您能否澄清一下「列表中相同位置的數字之間的數字」是什麼意思? – darthbith
你只需要在每個位置之間的數字,還是所有的組合?在你的例子中,你需要'[0,4,3,5]' – beroe
那麼,在你的例子中,結果會有4 ** 3個條目? –