我想比较两个列表并获取正确展示位置的数量.
我应该得到这些输出的2
。
vp = 0
lcodecouleur = [2,2,1,1]
userinput = [1,1,1,1]
def verif_placement():
if lcodecouleur[0] == userinput[0]:
++vp
else:
pass
if lcodecouleur[1] == userinput[1]:
++vp
else:
pass
if lcodecouleur[2] == userinput[2]:
++vp
else:
pass
if lcodecouleur[3] == userinput[3]:
++vp
else:
pass
verif_placement()
将两个列表都转换为类型str
,使用zip()
和sum()
进行迭代:
lcodecouleur = [2,2,1,1]
userinput = [1,1,1,1]
lcodecouleur_new = [str(x) for x in lcodecouleur]
userinput_new = [str(x) for x in userinput]
print(sum([1 for a, b in zip(lcodecouleur_new, userinput_new) if b in a]))
输出:
2
++vp
什么都不做,请改为执行以下操作:
vp = 0
lcodecouleur = [2, 2, 1, 1]
userinput = [1, 1, 1, 1]
def verif_placement():
global vp
if lcodecouleur[0] == userinput[0]:
vp += 1
else:
pass
if lcodecouleur[1] == userinput[1]:
vp += 1
else:
pass
if lcodecouleur[2] == userinput[2]:
vp += 1
else:
pass
if lcodecouleur[3] == userinput[3]:
vp += 1
else:
pass
verif_placement()
您需要使用vp += 1
为每个匹配项添加 1,vp = vp + 1
的缩写。您还必须将vp
定义为全局变量。
单行解决方案,使用 zip() 从两个列表中获取元素,如果两个数字相同,则 True 和 sum 计算 True 值
lcodecouleur = [2,2,1,1]
userinput = [1,1,1,1]
print(sum(True for i,j in zip(lcodecouleur,userinput) if i==j))
#2