我想要生成長度爲4的所有可能的DNA序列的列表,其中四個字符爲A
,T
,C
,G
。總共有4^4(256)種不同的組合。我包括重複,例如允許AAAA
。 我已經看過itertools.combinations_with_replacement(iterable, r)
然而,根據輸入字符串的順序即長度爲4的字符串中的DNA字符的所有組合4
itertools.combinations_with_replacement('ATCG', 4) #diff results to...
itertools.combinations_with_replacement('ATGC', 4)
因爲這個列表輸出的變化,我在合併itertools.combinations_with_replacement(iterable, r)
的嘗試,與itertools.permutations()
,使得通輸出itertools.permutations()
至itertools.combinations_with_replacement()
。如下面所定義:
def allCombinations(s, strings):
perms = list(itertools.permutations(s, 4))
allCombos = []
for perm in perms:
combo = list(itertools.combinations_with_replacement(perm, 4))
allCombos.append(combo)
for combos in allCombos:
for tup in combos:
strings.append("".join(str(x) for x in tup))
然而運行allCombinations('ATCG', li)
其中li = []
然後取 list(set(li))
仍然只前進136個獨特序列,而不是256。
必須有一個簡單的方法來做到這一點,也許產生功率設置,然後過濾長度4?
'itertools.product( 'ATCG',重複= 4)' ? – ayhan
作爲答覆和生病接受 –
這是非常相似。但我相信鏈接中的用戶要求在字符串 –