我有一个比较两个列表元素并返回它们之间差异的函数。我有两个版本。第一个有效,但第二个无效。第二个功能有什么问题?输入a和b是两个相同长度的列表。
def compareLists(a, b):
A = sum([1 if i > j else 0 for i, j in zip(a, b)])
B = sum([1 if j > i else 0 for i, j in zip(a, b)])
return (A, B)
def compareLists(a, b):
A = sum([1 for i in range(0, len(a)) if a[i] > b[i] else 0])
B = sum([1 for i in range(0, len(a)) if b[i] > a[i] else 0])
return (A, B)
例如输入和输出:a = [1, 2, 3,4]
; b = [0, -2, 5, 6]
; output = (2, 2)
答案 0 :(得分:1)
第二个代码中不需要三元运算符(Enable file merging and multiple check-out
),因为在列表理解中使用Merge Changes in Merge Tool
表达式可以过滤输出:
if-else
像在第二个代码中一样添加if
会使语法无效。
为完整起见,如评论中的@wim所示,在您的第一个代码中不需要使用三元运算符,因为Python中的布尔值只是A = sum([1 for i in range(0, len(a)) if a[i] > b[i]])
B = sum([1 for i in range(0, len(a)) if b[i] > a[i]])
和else
的整数,所以您可以直接输出比较运算符返回的布尔值:
1