1
我正在編寫一個庫,將用於驗證。我將有一組元素和一個測試系統,以某種順序消耗它們。該集合表示所有可能的輸入,並且系統將接收這些元素的有限序列。在Python中計算長度爲M的第N個序列
由於集有限序列的將是無限的,我並不想計算一組所有序列,而是採用蟒蛇發電機設想到完成以下任務:
def seq(s): # s is a set
length = 0
nth = 0
# r = calculate nth sequence of length
# if there are no more sequences of length, length += 1
# else n += 1, yield r
我最終會延長這到內射和雙射序列,但是現在這個集合的元素可以出現任何次數。
發電機是最好的方法嗎?使用像這樣的生成器是否消除了遞歸獲得的任何簡單性?任何人都可以指向我可以幫助我的任何itertools(或其他模塊)捷徑嗎?
This看起來不錯,我想我會使用combinations_with_replacement(,)來允許序列中的重複? – 2012-04-19 14:32:53
@JohnCarter,好吧,上面的_does_允許重複序列。不同的是,對於上面使用的n維笛卡爾產品,訂單很重要; '(1,1,2)'和'(1,2,1)'都生成。如果你不想要那個,那麼'combination_with_replacement'就是要走的路。 – senderle 2012-04-19 14:53:57
對。感謝澄清。 – 2012-04-19 15:27:19