3 回答

TA贡献1818条经验 获得超3个赞
您是通过列表的价值循环a和b再试图与索引的值列表。您需要在函数中删除a[i]和j[i],然后使用i和j代替:
def compareTriplets(a, b):
a = a[:3]
b = b[:3]
result = [0,0]
for i,j in list(zip(a,b)):
if i > j:
result[0] += 1
elif i < j:
result[1] += 1
return result
a = [1,2,3]
b = [3,2,1]
print (compareTriplets(a, b))
# [1, 1]

TA贡献1843条经验 获得超7个赞
您正在使用a[i]而不是i(对于b[j])。这是固定代码:
def compareTriplets(a, b):
a = a[:3]
b = b[:3]
result = [0,0]
for i,j in list(zip(a,b)):
if i > j:
result[0] += 1
elif i < j:
result[1] += 1
return result
a = [1,2,3]
b = [3,2,1]
print(compareTriplets(a,b)) # [1, 1]
这是一个单行样式的解决方案,它很短:
def compareTriplets(a, b):
return [sum(r) for r in zip(*((i>j, i<j) for i,j in zip(a,b)))]
a = [1,2,3]
b = [3,2,1]
print(compareTriplets(a,b)) # [1, 1]
请注意,它也适用于具有 3 个以上元素的列表。
添加回答
举报