Python 中基于二进制表示中的 1 计数对数字进行排序的程序
pythonserver side programmingprogramming更新于 2026/1/3 13:32:17
假设我们在 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
- 这将返回一对 p,其中(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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

