在 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在前。

示例

让我们看看以下实现以获得更好的理解 -

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 中根据二进制表示中的 1 个计数对数字进行排序的程序 的全部内容, 来源链接: utcz.com/z/317219.html

回到顶部