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?