我有一個二維串列,其中行號為 60,列號不固定。在這里,行號表示位置。如何在不改變位置的情況下獲得所有可能的組合?
讓我用一個例子來解釋一下:讓我們讓它更短一些來理解。假設,行號是 3 而不是 60。串列:
list_val = [[1, 2, 3], [2, 3], [5]]
我想得到這個組合:
{1, 2, 5}, {1, 3, 5}, {2, 2, 5}, {2, 3, 5}, {3, 2, 5}, {3, 3, 5}
對于三個,撰寫三個嵌套回圈應該很容易。但是對于 60,撰寫 60 個嵌套回圈并不是一個好主意。有沒有更好的方式在 python 中撰寫代碼?
uj5u.com熱心網友回復:
您正在尋找的是以itertools.product()一種相當有效的方式實作它,這樣您就不需要重新發明它,而且它適用于大型迭代。
這是為什么?它是在 C ( 1 , 2 ) 中實作的,因此性能比標準的純 Python 回圈實作更快,除非您使用可以達到相當速度的技巧。
不要忘記解壓縮具有要使用星號/星號(*)的可迭代物件的可迭代物件,或為其提供多個變數(product(one, two, three)),否則它的行為會有所不同。
>>> from itertools import product
>>> list(product(*[[1, 2, 3], [2,3], [5]]))
[(1, 2, 5), (1, 3, 5), (2, 2, 5), (2, 3, 5), (3, 2, 5), (3, 3, 5)]
>>>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/425222.html
上一篇:無法使用T=vector<T::iterator>創建遞回型別
下一篇:代碼在回傳值之前撤消自身
