【问题标题】:How can I match element by element of list?如何逐个元素地匹配列表?
【发布时间】:2022-01-03 14:27:09
【问题描述】:

我正在尝试通过查看字母来解决检查字母之间距离的问题。我在字典里描述过。我给了“l = 10000”,以便稍后我可以轻松区分正确的分子。我认为这个想法本身很好,但它给了我错误“如果 abs (words [text [i] [j]] - words [text [i] [j + 1]]

我将不胜感激。

代码:

    words={'A':0,'B':1,'C':2,'D':3,'E':4,'F':5,'G':6,'H':7,'I':8,'J':9,'K':10,'L':11,'M':12,'N':13,'O':14,'P':15,'Q':16,'R':17,'S':18,'T':19,'U':20,'V':21,'W':22,'X':23,'Y':24,'Z':25,}
    text = ['XXUXXTYVXWA', 'YTWYVWUTYA', 'PUOMQVMRNOSNVONOQOQMPPMRTVRSVRUNMOUSVUOTTMNRVQX']
    l = 0
    t = []
    for i in range(0,len(text)):
        for j in range(0,len(text[i])):
            if abs(words[text[i][j]] - words[text[i][j+1]] < 10):
                l = l+1
            else:
                l = 10000
        t.append(l)
        l = 0
    print(t)

【问题讨论】:

  • j + 1 超出范围,请使用range(len(text[i]) - 1) 而不是range(0,len(text[i]))
  • 当我给range(len(text[i]) - 1) 程序工作时,但是显示“text”的第三个单词是正确的,即l不显示“1000” 0 ,它只是按顺序计算字母。问题是第三个单词应该是错误的答案,即“10000”

标签: python list loops


【解决方案1】:

当您想将最后一个字母与最后一个字母之后的字母进行比较时,最后一次迭代引发了错误,该字母不存在。也许从 1 开始,将当前字母与前一个字母进行比较,如下所示:

words={'A':0,'B':1,'C':2,'D':3,'E':4,'F':5,'G':6,'H':7,'I':8,'J':9,'K':10,'L':11,'M':12,'N':13,'O':14,'P':15,'Q':16,'R':17,'S':18,'T':19,'U':20,'V':21,'W':22,'X':23,'Y':24,'Z':25,}
    text = ['XXUXXTYVXWA', 'YTWYVWUTYA', 'PUOMQVMRNOSNVONOQOQMPPMRTVRSVRUNMOUSVUOTTMNRVQX']
    l = 0
    t = []
    for i in range(0,len(text)):
        for j in range(1,len(text[i])):
            if abs(words[text[i][j-1]] - words[text[i][j]] < 10):
                l = l+1
            else:
                l = 10000
        t.append(l)
        l = 0
    print(t)

【讨论】:

    【解决方案2】:

    我建议使用内置的ord 来检查字母之间的距离。

    In [1]: ord("i") - ord("g")
    Out[1]: 2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      相关资源
      最近更新 更多