亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python將字符串中的多個位置分別切換為多個字母

Python將字符串中的多個位置分別切換為多個字母

蕪湖不蕪 2023-12-09 16:01:53
我正在嘗試編寫一個Python代碼來查找DNA序列中的限制性內切酶位點。限制性內切酶切割特定的 DNA 序列,但有些限制性酶不是那么嚴格,例如 XmnI 切割此序列:甘南NTTC其中 N 可以是任何核苷酸(A、C、G 或 T)。如果我的數學正確的話,那就是 4^4 = 256 個可以剪切的獨特序列。我想列出這 256 個短序列,然后對照(較長)輸入 DNA 序列檢查每個序列。然而,我很難生成 256 個序列。這是我到目前為止所擁有的:cutsequencequery = "GAANNNNTTC"Nseq = ["A", "C", "G", "T"]querylist = []if "N" in cutsequencequery:    Nlist = [cutsequencequery.replace("N", t) for t in Nseq]    for j in list(Nlist):        querylist.append(j)for i in querylist:    print(i)print(len(querylist))這是輸出:GAAAAAATTCGAACCCCTTCGAAGGGGTTCGAATTTTTTC4所以它將每個 N 切換到 A、C、G 和 T,但我認為我需要另一個循環(或 3?)來生成所有 256 種組合。有沒有一種我沒有看到的有效方法來做到這一點?
查看完整描述

1 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

也許你應該看看python 的 itertools 庫,其中包括product它使用可迭代的每個組合創建一個可迭代,因此:


from itertools import product


cutsequencequery = "GAANNNNTTC"

nseq = ["A", "C", "G", "T"]


size = cutsequencequery.count('N')


possibilities = product(*[nseq for i in range(size)])?

# = ('A', 'A', 'A', 'A'), ... , ('T', 'T', 'T', 'T')?

# len(list(possibilities)) = 256 = 4^4, as expected


s = set()

for n in possibilities:

? ? print(''.join(n)) # = 'AAAA', ..., 'TTTT'

? ? new_sequence = cutsequencequery.replace('N' * size, ''.join(n))

? ??

? ? s.add(new_sequence)

? ? print(new_sequence) # = 'GAAAAAATTC', ..., 'GAATTTTTTC'

print(len(s)) # 256 unique sequences


查看完整回答
反對 回復 2023-12-09
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號