我想與那些結合地方零插入如下創建列表:有沒有更快的方式來創建(0,1)組合在Python中的列表?
l = [(0, 0, 0, 0, 1, 1),
(0, 0, 0, 1, 0, 1),
(0, 0, 0, 1, 1, 0),
(0, 0, 1, 0, 0, 1),
(0, 0, 1, 0, 1, 0),
(0, 0, 1, 1, 0, 0),
(0, 1, 0, 0, 0, 1),
(0, 1, 0, 0, 1, 0),
(0, 1, 0, 1, 0, 0),
(0, 1, 1, 0, 0, 0),
(1, 0, 0, 0, 0, 1),
(1, 0, 0, 0, 1, 0),
(1, 0, 0, 1, 0, 0),
(1, 0, 1, 0, 0, 0),
(1, 1, 0, 0, 0, 0)]
我可以用
[e for e in itertools.product(range(2), repeat=6) if sum(e)==2]
但是構建列表,當repeat
參數獲得20個大,該代碼非常耗時。
我認爲這可能是在內存中建立中間結果的問題? 我想知道有沒有更好的方法來創建我需要的列表。 謝謝。
似乎沒什麼問題。你可能只是有一個大對象。 – TigerhawkT3
是的,由於您的方法會生成所有可能的二進制序列,然後用兩個1進行挑選,所以這會變得越來越慢。你最好直接構建序列。 – pvg