簡體   English   中英

Python - 多重組合數學題

[英]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.

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