[英]Trying to create a python script to answer a maths question with n! combinations
[英]Python - multiple combinations maths question
我正在嘗試編寫一個程序,列出 DNA 的所有 64 個密碼子/三聯體鹼基序列……用更數學的術語來說,有 4 個字母:A、T、G 和 C。
我想列出所有可能的結果,每個結果都有三個字母,一個字母可以多次使用,但我不知道怎么做!
我知道有 64 種可能性,我把它們都寫在紙上,但我想寫一個程序來為我生成所有這些,而不是我把所有 64 種都打出來!
目前,我處於這一點,但我肯定把它復雜化了,我被卡住了:
list = ['A','T','G','C']
list2 = []
y = 0
x = 1
z = 2
skip = False
back = False
for i in range(4):
print(list[y],list[y],list[y])
if i == 0:
skip = True
else:
y=y+1
for i in range(16):
print(list[y],list[y],list[x])
print(list[y],list[x], list[x])
print(list[y],list[x], list[y])
print(list[y],list[x], list[z])
if i == 0:
skip = True
elif z == 3:
back = True
x = x+1
elif back == True:
z = z-1
x = x-1
else:
x = x+1
z = z+1
任何幫助將非常感激!!!!
您真的應該為此使用itertools.product
。
from itertools import product
l = ['A','T','G','C']
combos = list(product(l,repeat=3 ))
# all 64 combinations
由於這會生成一個迭代器,因此如果您只是要循環遍歷它,則無需將其包裝在list()
。 (另外,不要命名您的列表list
- 它會破壞內置)。
如果你想要一個字符串列表,你可以join()
它們,正如約翰科爾曼在你的問題下的評論中顯示的那樣。
list_of_strings = ["".join(c) for c in product(l,repeat=3) ]
尋找重復的排列,那里有大量可用於 Python 的代碼。 如果你想看看他們是如何實現它的,我會使用 library 。 這些家伙通常做得非常有效率
import itertools
x = [1, 2, 3, 4, 5, 6]
[p for p in itertools.product(x, repeat=2)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.