2024-04-27 00:25:43 发布
网友
我想知道在python中是否有一种通用的方法来比较两个列表中的元素(例如,列表1中的元素大于列表2中的元素),这种方法比下面更简洁:
t1 = [1,1,0] t2 = [2,2,1] for I in range(len(t1)): if t1[I] > t2[I]: return False
提前谢谢!你知道吗
列表(以及一般的序列)是按字典顺序(元素对元素)进行比较的,这完全是您想要的。所以,你的循环相当于:
return not t1 > t2
当然,如果两个列表的长度不同,则会有不同的处理方式(例如,在某些情况下,您的代码将返回一个IndexError,而另一个将返回False)。但实际上,您必须定义在这些情况下您希望发生什么,然后实际上为它们编写测试代码将很容易,只不过有一半的时间,您希望的正是默认列表比较已经完成的工作。你知道吗
IndexError
使用any()或all()分别测试一个条件是否适用于列表中的任何元素或所有元素,并使用zip将两个列表粘在一起。例如,问题中的代码可以更简洁地实现如下:
any()
all()
zip
not any(x > y for x, y in zip(t1, t2)) => True
或者,正如@squiguy在评论中指出的:
all(x <= y for x, y in zip(t1, t2)) => True
列表(以及一般的序列)是按字典顺序(元素对元素)进行比较的,这完全是您想要的。所以,你的循环相当于:
当然,如果两个列表的长度不同,则会有不同的处理方式(例如,在某些情况下,您的代码将返回一个
IndexError
,而另一个将返回False)。但实际上,您必须定义在这些情况下您希望发生什么,然后实际上为它们编写测试代码将很容易,只不过有一半的时间,您希望的正是默认列表比较已经完成的工作。你知道吗使用
any()
或all()
分别测试一个条件是否适用于列表中的任何元素或所有元素,并使用zip
将两个列表粘在一起。例如,问题中的代码可以更简洁地实现如下:或者,正如@squiguy在评论中指出的:
相关问题 更多 >
编程相关推荐