繁体   English   中英

检查四个元素的列表是否在 Python 中有两对相等的数字

[英]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.

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