簡體   English   中英

在python中使用組合處理非常大的序列

[英]Using combinations in python for very large sequences

我試圖確定可以組成29個元素序列的87個不同字符串的所有組合。 我在python中使用組合來執行此操作,如果序列只有4個元素長,但不能處理29個,則可以正常工作。這是我正在使用的代碼:

combos = itertools.combinations(testv, 29)

usable_combos = []
for i in combos:
    usable_combos.append(i)

但是代碼在循環階段失敗。 我認為這是某種內存問題,但不確定如何解決。 有什么建議么?

您正在嘗試將大量元組填充到此處的列表中。 准確地說是101.416.867.967.028.166.758.360不同的元組 這個數字如此之大,我什至不知道如何將其拼寫出來,但是您可以從101開始, 幾乎是半個六十億。

當您將4個元素組合在一起時,只有2.225.895個不同的組合 (略高於200萬個),這是很容易管理的,但是將其推到了大多數計算機根本無法一次存儲在內存中的水平。

與其將所有內容添加到列表中,然后再使用該列表, 不如在循環時更好地處理這些組合:

for i in combos:
     # process i, move on

或找到另一種解決問題的方法,而不涉及循環所有可能的組合。 也許有一些方法可以減少您實際需要考慮的組合數量?

list.append() ,不是使用for循環和list.append() ,而是可以使用:

combos = itertools.combinations(testv, 4)
usable_combos = list(combos)

創建您的列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM