Python 比较两个列表和;“回首往事”;

Python 比较两个列表和;“回首往事”;,python,Python,你如何比较两份清单并“回顾”呢 我正在比较两个列表的元素,如下所示: score = 0 for (x,y) in zip(seqA,seqB): if x == y: score = score +1 if x !=y : score = score - 1 现在我希望分数+3如果上一个对是匹配的,那么基本上我必须“回顾”一次迭代。只保存最后一次匹配的结果 score = 0 prev = 0 for (x,y) in zip(seqA

你如何比较两份清单并“回顾”呢

我正在比较两个列表的元素,如下所示:

score = 0
for (x,y) in zip(seqA,seqB):

    if x == y:
        score = score +1

    if x !=y :
        score = score - 1

现在我希望
分数+3
如果上一个对是匹配的,那么基本上我必须“回顾”一次迭代。

只保存最后一次匹配的结果

score = 0
prev  = 0

for (x,y) in zip(seqA,seqB):

    if x == y:
        if prev == 1:
            score = score +3
        else:
            score = score +1
        prev = 1

    if x !=y :
        score = score - 1
        prev = 0

保存最后一场比赛的结果

score = 0
prev  = 0

for (x,y) in zip(seqA,seqB):

    if x == y:
        if prev == 1:
            score = score +3
        else:
            score = score +1
        prev = 1

    if x !=y :
        score = score - 1
        prev = 0

可能有更直接的方法,但明确也不坏。
添加的想法引入了一个变量,该变量告诉我们下次匹配时要添加的数量

score = 0
matchPts = 1                   // by default, we add 1
for (x,y) in zip(seqA,seqB):

    if x == y:
        score = score + matchPts 
        matchPts = 3 

    if x !=y :
        score = score - 1
        matchPts = 1
对于多场连续比赛,可以引入更复杂的奖励等级,但需要做一些更改:

score = 0
consecutiveMatches = 0 
for (x,y) in zip(seqA,seqB):

    if x == y:
        consecutiveMatches += 1 
        reward = 1
        if consecutiveMatches == 2:
           reward = 3;
        if consecutiveMatches > 2 :
           reward = 5;
        if consecutiveMatches > 5 :
           reward = 100;     // jackpot ;-)
        // etc.
        score += reward
    else:
        score -=  1
        consecutiveMatches  = 0

可能有更直接的方法,但明确也不坏。
添加的想法引入了一个变量,该变量告诉我们下次匹配时要添加的数量

score = 0
matchPts = 1                   // by default, we add 1
for (x,y) in zip(seqA,seqB):

    if x == y:
        score = score + matchPts 
        matchPts = 3 

    if x !=y :
        score = score - 1
        matchPts = 1
对于多场连续比赛,可以引入更复杂的奖励等级,但需要做一些更改:

score = 0
consecutiveMatches = 0 
for (x,y) in zip(seqA,seqB):

    if x == y:
        consecutiveMatches += 1 
        reward = 1
        if consecutiveMatches == 2:
           reward = 3;
        if consecutiveMatches > 2 :
           reward = 5;
        if consecutiveMatches > 5 :
           reward = 100;     // jackpot ;-)
        // etc.
        score += reward
    else:
        score -=  1
        consecutiveMatches  = 0

与其他人的做法类似,但我宁愿使用“correct”之类的变量名,也不愿看到到处都是“x==y”

# Create a list of whether an answer was "correct". results = [x == y for (x,y) in zip(seqA, seqB)] score = 0 last_correct = False for current_correct in results: if current_correct and last_correct: score += 3 elif current_correct: score += 1 else: score -= 1 last_correct = current_correct print score #创建答案是否“正确”的列表。 结果=[x==y,对于zip中的(x,y)(seqA,seqB)] 分数=0 最后正确=错误 对于当前_,请在结果中更正: 如果当前\u正确且上次\u正确: 分数+=3 elif电流_正确: 分数+=1 其他: 分数-=1 最后一次纠正=当前纠正 打印分数
与其他人的做法类似,但我宁愿使用“correct”之类的变量名,也不愿看到到处都是“x==y”

# Create a list of whether an answer was "correct". results = [x == y for (x,y) in zip(seqA, seqB)] score = 0 last_correct = False for current_correct in results: if current_correct and last_correct: score += 3 elif current_correct: score += 1 else: score -= 1 last_correct = current_correct print score #创建答案是否“正确”的列表。 结果=[x==y,对于zip中的(x,y)(seqA,seqB)] 分数=0 最后正确=错误 对于当前_,请在结果中更正: 如果当前\u正确且上次\u正确: 分数+=3 elif电流_正确: 分数+=1 其他: 分数-=1 最后一次纠正=当前纠正 打印分数
如果上一对和当前对匹配,您的意思是+3吗?+1之外的+3,或+1之外的+3?如果上一对和当前对匹配,您的意思是+3吗?+1之外的+3,或+1之外的+3?