原生模块
Python 原生模块相关知识点
  • 在Python3中,单斜杠/表示浮点除法,双斜杠//表示整数除法。
  • StringIO在python2中可以用户保存bytes,但在python3中不能保存bytes,要用BytesIO
使用python实现大浮点数排序
1
import functools
2
3
def sort_long_float(f1, f2):
4
f1_words = f1.split('.')
5
int_str1 = f1_words[0]
6
float_str1 = f1_words[1].rstrip('0')
7
f2_words = f2.split('.')
8
int_str2 = f2_words[0]
9
float_str2 = f2_words[1].rstrip('0')
10
int1 = int(int_str1)
11
int2 = int(int_str2)
12
if int1 > int2:
13
return 1
14
elif int1 < int2:
15
return -1
16
else:
17
if float_str1 > float_str2:
18
return 1
19
elif float_str1 < float_str2:
20
return -1
21
else:
22
return 0
23
24
arr = ['0.5', '0.66', '0.50', '0.60', '0.10']
25
26
sorted_arr = sorted(arr, key=functools.cmp_to_key(sort_long_float))
27
print(sorted_arr)
Copied!
主要利用了两个点:
  • python中int可以表示无限大的整数
  • 字符串表达小数部分,字符串比对是用字典序,跟小数部分的大小比较逻辑是一样的;
  • functools可以用来实现类似C++ sort模板中复杂的cmp函数
复制链接