账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    数组内两两配对问题
    59
    0

    有一个数组,想求出所有两两配对的情况,用python怎么写比较优雅
    比如输入数组是[1,2,3,4]

    • 情况1
      1和2配对,3和4配对
    • 情况2
      1和3配对,2和4配对
    • 情况3
      1和4配对,2和3配对

    把这三种情况都求出来,两两配对没有先后顺序


    • 输入
    a=[1,2,3,4]
    • 输出
    [  
        [[1, 2], [3, 4]],  
        [[1, 3], [2, 4]],  
        [[1, 4], [2, 3]]
    ]
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在数组内两两配对问题,是指将数组中的元素按照一定的顺序进行配对,使得每一对相邻的元素都相同,或者每一对非相邻的元素都不同。以下是一个简单的Python示例,展示了如何使用列表推导式和集合的union()方法来解决这个问题:

      ```python def pair_by_value(arr): # 创建一个空集合来存储配对结果 result = set()

      # 遍历数组
      for i in range(len(arr)):
          # 遍历数组的下标,从0到i-1
          for j in range(i + 1, len(arr)):
              # 如果两个元素的值相同,则将它们添加到结果集合中
              if arr[i] == arr[j]:
                  result.add((i, j))
      
      return result
      

      ```

      在这个函数中,我们首先创建一个空集合result,然后使用两个嵌套的for循环遍历数组arr。对于每一对相邻的元素,我们首先检查它们的值是否相同。如果是,则将它们添加到结果集合result中,形成一个配对。最后,函数返回结果集合result

      例如,如果我们有一个数组arr = [1, 2, 3, 4, 5],调用pair_by_value(arr),它将返回一个包含所有配对((0, 0), (0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4), (4, 5))`的集合。

      注意,这个函数假设数组中的元素是整数。如果你的数组包含浮点数或其他类型的元素,你可能需要修改if arr[i] == arr[j]的检查条件,以确保结果集只包含整数。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部