【问题标题】:Comparing each char in two strings and incrementing: Python比较两个字符串中的每个字符并递增:Python
【发布时间】:2019-02-28 02:31:38
【问题描述】:
for x in predRslt:
    for y in actRslt:
        if x == y and x =='1':
            trueP += 1
        elif x == y and x =='0':
            trueN += 1
        elif x != y and x == '1':
            falseN += 1      
        elif x != y and x == '0':
            falseP += 1

    charNum += 1
totalActN = trueN + falseP
totalActP = falseN + trueP
totalPredN = trueN + falseN
totalPredP = trueP + falseP

print falseP

cmp_rslt('0110101001','1100100101')

实际输出:25

预期输出:2

我试图从头开始依次遍历每个字符串并比较结果。然后递增相应的 TrueN、TrueP、FalseN 或 FalseP。

由于某种原因,我一直得到 25 的输出,而我应该得到的结果却少得多,因为我应该只进行 10 次比较

【问题讨论】:

    标签: python string compare


    【解决方案1】:

    您应该像这样使用第一个字符串的索引进行迭代:

    for idx, x in enumerate(predRslt);
        y = actRslt[idx]
    
        if x == y and x =='1':         
            trueP += 1
        elif x == y and x =='0':
            trueN += 1
        elif x != y and x == '1':
            falseN += 1      
        elif x != y and x == '0':
            falseP += 1
    

    【讨论】:

    • 完美!那行得通。你能解释为什么我的不起作用吗?在我的版本中,代码到底在计算什么?
    • 当然,您的版本迭代了两次,一次是“预测结果”,而对于每个预测结果,您都在迭代“实际结果”,这会导致大量比较。如果您仅遍历其中一个列表(例如“预测结果”),那么确保在访问“实际结果”时共享相同的“索引”,您应该很高兴。希望这会有所帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    相关资源
    最近更新 更多