簡體   English   中英

迭代並索引一個列表?

[英]Iterate over and index a list?

我正在嘗試遍歷具有許多重復字符的字符串,以便將其重新組織成一個列表,其中每個字符替換為 3 個字母代碼及其索引 + 1。

所以我想重組:

Seq = "THGTILH"

進入:

NewSeq = [Thr 1, His 2, Gly 3, Thr 4, Ile 5, Leu 6, His 7, His 8]

這只是一個示例字符串,最后一個將有約 300 個字符長。 感謝您的任何建議!

編輯:這是我編寫的代碼,它遍歷字符串以用 3 個字母代碼替換單個字母。

Seq = "THGTILH"
NewSeq = []

for i in Seq:
    AA = None
    Num = Seq.index(i) + 1
    if i == 'M':
        AA = 'Met'
    if i == 'E':
        AA = 'Glu'
    if i == 'A':
        AA = 'Ala'
    if i == 'C':
        AA = 'Cys'
    if i == 'D':
        AA = 'Asp'
    if i == 'F':
        AA = 'Phe'
    if i == 'G':
        AA = 'Gly'
    if i == 'H':
        AA = 'His'
    if i == 'I':
        AA = 'Ile'
    if i == 'K':
        AA = 'Lys'
    if i == 'L':
        AA = 'Leu'
    if i == 'N':
        AA = 'Asn'
    if i == 'P':
        AA = 'Pro'
    if i == 'Q':
        AA = 'Gln'
    if i == 'R':
        AA = 'Arg'
    if i == 'S':
        AA = 'Ser'
    if i == 'T':
        AA = 'Thr'
    if i == 'V':
        AA = 'Val'
    if i == 'W':
        AA = 'Trp'
    if i == 'Y':
        AA = 'Tyr'
    NewSeq.append(AA)

您可以使用dictionary將 map 的字母改為其各自的內容,然后使用list comprehension推導:

ref = {'T': 'Thr', 'H': 'His', 'G': 'Gly', 'I': 'Ile', 'L': 'Leu'}
[f'{ref[s]} {i+1}' for i,s in enumerate(Seq)]

Output:

['Thr 1', 'His 2', 'Gly 3', 'Thr 4', 'Ile 5', 'Leu 6', 'His 7']

假設您有一個字典,其中包含每個字符及其對應的 3 字母代碼:

d={'H':'His','T':'Thr','G':'Gly', 'I':'Ile','L':'Leu'}

然后,使用此代碼獲取您想要的列表,該列表遍歷每個字符是 Seq 並構建您喜歡的字符串(3 字母代碼 + 索引)並將其附加到列表中:

d={'H':'His','T':'Thr','G':'Gly', 'I':'Ile','L':'Leu'}

Seq = "THGTILH"

l=[]

for i,ch in enumerate(Seq):
  l.append(d[ch]+' '+str(i+1))

基本上就是這些步驟。

  • 您編寫一個字典,鍵為 1 個字母 aa 代碼,值為 3 個字母代碼。
  • 然后你列出肽/蛋白質
  • 聲明一個空列表,稍后您將向其 append
  • 然后枚舉並迭代它
  • 對於每個字母代碼,您都會獲得 3 個字母代碼和索引。 將此添加到上面定義的列表中
  • 打印或返回最終列表

這是代碼。

AA_3_Letter_Code = {'A':"ALA",
                    "C":"CYS",
                    "D":"ASP",
                    "E":"GLU",
                    "F":"PHE",
                    "G":"GLY",
                    "H":"HIS",
                    "I":"ILE",
                    "K":"LYS",
                    "L":"LEU",
                    "M":"MET",
                    "N":"ASN",
                    "P":"PRO",
                    "Q":"GLN",
                    "R":"ARG",
                    "S":"SER",
                    "T":"THR",
                    "V":"VAL",
                    "W":"TRP",
                    "Y":"TYR"}

def Convert_Peptide(Peptide):
    SplitIntoList = list(Peptide)
    FinalAnswer = []
    for index, aa in enumerate(SplitIntoList):
        FinalAnswer.append(AA_3_Letter_Code[aa] +" "+ str(index+1))
    print(FinalAnswer)
    return FinalAnswer

當您將其稱為肽時,答案如下

Convert_Peptide("THGTILH")
['THR 1', 'HIS 2', 'GLY 3', 'THR 4', 'ILE 5', 'LEU 6', 'HIS 7']

您可以潛在地轉換任何大肽或蛋白質。 對於胰島素以下是答案

Convert_Peptide("MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN")
['MET 1', 'ALA 2', 'LEU 3', 'TRP 4', 'MET 5', 'ARG 6', 'LEU 7', 'LEU 8', 'PRO 9', 'LEU 10', 'LEU 11', 'ALA 12', 'LEU 13', 'LEU 14', 'ALA 15', 'LEU 16', 'TRP 17', 'GLY 18', 'PRO 19', 'ASP 20', 'PRO 21', 'ALA 22', 'ALA 23', 'ALA 24', 'PHE 25', 'VAL 26', 'ASN 27', 'GLN 28', 'HIS 29', 'LEU 30', 'CYS 31', 'GLY 32', 'SER 33', 'HIS 34', 'LEU 35', 'VAL 36', 'GLU 37', 'ALA 38', 'LEU 39', 'TYR 40', 'LEU 41', 'VAL 42', 'CYS 43', 'GLY 44', 'GLU 45', 'ARG 46', 'GLY 47', 'PHE 48', 'PHE 49', 'TYR 50', 'THR 51', 'PRO 52', 'LYS 53', 'THR 54', 'ARG 55', 'ARG 56', 'GLU 57', 'ALA 58', 'GLU 59', 'ASP 60', 'LEU 61', 'GLN 62', 'GLY 63', 'SER 64', 'LEU 65', 'GLN 66', 'PRO 67', 'LEU 68', 'ALA 69', 'LEU 70', 'GLU 71', 'GLY 72', 'SER 73', 'LEU 74', 'GLN 75', 'LYS 76', 'ARG 77', 'GLY 78', 'ILE 79', 'VAL 80', 'GLU 81', 'GLN 82', 'CYS 83', 'CYS 84', 'THR 85', 'SER 86', 'ILE 87', 'CYS 88', 'SER 89', 'LEU 90', 'TYR 91', 'GLN 92', 'LEU 93', 'GLU 94', 'ASN 95', 'TYR 96', 'CYS 97', 'ASN 98']

您應該在Bioinformatics stack-exchange提出這個問題,以獲得更優雅的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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