[英]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 中的布尔值只是1
和0
整数,因此您可以直接输出比较运算符返回的布尔值反而:
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.