[英]Check if list of four elements has two pairs of equal numbers in Python
我在 codesignal 上解决了这个问题:
如果两只手臂能够举起的最重的重量相等,则称它们同样强壮。
如果两个人最强壮的手臂同样强壮(最强壮的 arm 可以同时是左右),则称他们同样强壮,最弱的手臂也是如此。
考虑到您和您朋友手臂的举重能力,看看你们两个是否同样强壮。
我能够找到这个解决方案并且它适用于所有测试。 有人可以帮我找到一个更短的解决方案吗? 我觉得我的太长了。 谢谢
def solution(yourLeft, yourRight, friendsLeft, friendsRight):
lst_me = []
lst_me.append(yourLeft)
lst_me.append(yourRight)
lst_me = sorted(lst_me)
lst_friend = []
lst_friend.append(friendsLeft)
lst_friend.append(friendsRight)
lst_friend = sorted(lst_friend)
if lst_me[0] == lst_friend[0] and lst_me[1] == lst_friend[1]:
return True
else:
return False
将每对手臂放入无序集合(如set
)并进行比较:
def solution(yourLeft, yourRight, friendsLeft, friendsRight):
return {yourLeft, yourRight} == {friendsLeft, friendsRight}
>>> solution(100, 120, 120, 100)
True
>>> solution(100, 100, 120, 100)
False
>>> solution(100, 100, 100, 100)
True
由于集合之间的相等比较对顺序不敏感,因此在进行比较之前无需对它们进行排序。 {x, y} == {y, x}
。
请注意,如果必须处理三个臂,此解决方案将不起作用,因为{x, x, y} == {x, y, y}
同样,如果您有这样的限制阻止您使用集合:在排序列表之间进行比较的一种较短的方法是:
def solution(yourLeft, yourRight, friendsLeft, friendsRight):
return sorted([yourLeft, yourRight]) == sorted([friendsLeft, friendsRight])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.