在我的代码中,我正在做一个匹配系统,你有两个列表,代码为列表中与同一索引相同的每个项目的变量添加一个变量,并且与另一个列表相同的项目,否则它添加一个然后将其中的两个数字放入列表并打印列表。
def report(ticket,winner):
kiss = []
Love = []
x = 0
y = 0
for number in ticket:
if number in winner:
x +=1
elif ticket not in winner:
y += 1
kiss.append(x)
kiss.append(y)
print kiss
错误是这样的输入,报告([1,2],[1,2,3])我希望它添加两个到x因为其中两个是在正确的位置并且是相同的那么它需要在y中添加一个因为它在那里而不匹配但是它让我出局:[2,0]如果我输入报告([1,3],[1,2,3])它给了我[2,0]即使你没有在同一指数中。那个输出应该是[1,2]。
答案 0 :(得分:0)
根据您描述的逻辑,您的代码需要实现一些问题。主要是在{python} in
运算符检查项目是否存在 a list
中的任何位置,因此对于您的示例始终为{{1}并且你得到了意想不到的输出。
相反,我们想要检查True
列表中的每个项目,针对同一索引的ticket
列表中的每个项目,因此我们必须在检查每个项目时指定索引号。
试试这个:
winner
这些是您的预期产出吗?
希望这有帮助。
答案 1 :(得分:0)
这是使用zip
的稍短版本。
def report(ticket, winner):
z = sum(1 for x, y in zip(ticket, winner) if x == y)
return [z, max(len(ticket), len(winner)) - z]