比较python中两个列表中的元素

时间:2018-10-25 02:46:13

标签: python python-3.x list list-comprehension

我有一个比较两个列表元素并返回它们之间差异的函数。我有两个版本。第一个有效,但第二个无效。第二个功能有什么问题?输入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)

1 个答案:

答案 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
相关问题