排序大数

时间:2015-06-01 03:55:46

标签: python sorting largenumber

如果在Python中有一个非常大的数字列表,那么编译器就无法将它们的值作为数字得到。是否有一个函数可以更有效地对此列表进行排序(同时将数字保持为整数),例如将数字与数字进行比较? (但不转换为字符串)

2 个答案:

答案 0 :(得分:7)

Python 2和Python 3都处理任意大整数:

>>> [2**34, 2**38, 2**99, 2**122, 2]
[17179869184, 274877906944, 633825300114114700748351602688L, 5316911983139663491615228241121378304L, 2]

按预期排序:

>>> sorted(_)
[2, 17179869184, 274877906944, 633825300114114700748351602688L, 5316911983139663491615228241121378304L]

(Python 2将显示大于sys.maxint的整数的L,如此处的示例,而Python 3显示的整数值对于较小或较大的整数是相同的)

答案 1 :(得分:2)

这将是适用于其他语言的解决方案。你可以有一个整数列表。所以基本上,给定像123456789这样的数字,你可以把它表示为

bigNum = [[1,2,3],[4,5,6],[7,8,9]]

比较大数字可以通过以下方式完成:

  • 比较位数
  • 如果位数相等,请比较从最大数字开始的数字。