繁体   English   中英

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

[英]Comparing elements in two lists in python

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

您不需要在第二个代码中使用三元运算符 ( if-else ),因为在列表推导式中使用if表达式是可以过滤输出的方式:

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会使语法无效。

为了完整起见,正如@wim 在评论中指出的那样,在您的第一个代码中不需要使用三元运算符,因为 Python 中的布尔值只是10整数,因此您可以直接输出比较运算符返回的布尔值反而:

A = sum([i > j for i, j in zip(a, b)])
B = sum([j > i for i, j in zip(a, b)])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM