如果在Python中有一个非常大的数字列表,那么编译器就无法将它们的值作为数字得到。是否有一个函数可以更有效地对此列表进行排序(同时将数字保持为整数),例如将数字与数字进行比较? (但不转换为字符串)
答案 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]]
比较大数字可以通过以下方式完成: