比较python中两个列表中的元素
我有一个函数,它比较两个列表的元素并返回它们之间的差异。我有两个版本。第一个有效,但第二个无效。第二个函数有什么问题?输入a和b是两个长度相同的列表比较python中两个列表中的元素,python,python-3.x,list,list-comprehension,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
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]<代码>输出=(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)])
正确,但可能值得一提的是,您也不需要在第一个代码中使用三元。为完整性而编辑。谢谢。哦,好的。愚蠢的错误!也许我会在更多的练习后停止做这些。谢谢您的回答和更正。您甚至不需要
sum