在Python中基于1计数的二进制表示对数字进行排序的程序

在Python中基于1计数的二进制表示对数字进行排序的程序

假设我们有一个数字列表nums。我们必须按照每个数字的二进制表示中存在的1的数量升序排序列表。如果两个数字具有相同数量的1,则根据它们的值进行排列。

因此,如果输入为nums = [4、1、12、7、6],则输出将为[1、4、6、12、7],因为-

  • 4的二进制形式为0100
  • 1的二进制形式为0001
  • 6的二进制形式为0110
  • 12的二进制形式为1100
  • 7的二进制形式为0111

因此,排列方式为[1、4、6、12、7],首先是1,因为它的值较小,同样的原因,6也首先出现。

为了解决这个问题,我们将遵循以下步骤 –

  • 定义一个比较函数,它需要一个数字n
  • 这将返回配对(二进制形式的n中的1数,n的值)
  • 通过将每个值传入比较函数进行比较,对nums进行排序
  • 返回nums。

示例

让我们看一下以下实现以更好地理解-

def solve(nums):
   nums.sort(key = lambda num: (bin(num).count("1"), num))
   return nums

nums = [4、1、12、7、6]
print(solve(nums))

输入

 [4、1、12、7、6]

产量

 [1、4、6、12、7] 

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程