Python处理数据--sort,sorted

Head First Python第五部分http://python.itcarlow.ie/resources.html可以下载到本文需要的四个txt文件



读取每个txt文件,去掉不必要的空格,将每个文件中的数据,以列表的形式打印显示。

try:
    with open('james.txt','r') as james_file,open('julie.txt','r')as julie_file,open('mikey.txt','r')as mikey_file,open('sarah.txt','r')as sarah_file:
        james_list = james_file.readline().strip().split(',')
        julie_list = julie_file.readline().strip().split(',')
        mikey_list = mikey_file.readline().strip().split(',')
        sarah_list = sarah_file.readline().strip().split(',')
        print(james_list)
        print(julie_list)
        print(mikey_list)
        print(sarah_list)
except IOError as err:
    print('File error:'+str(err))

运行结果:

    
['2-34', '3:21', '2.34', '2.45', '3.01', '2:01', '2:01', '3:10', '2-22']
['2.59', '2.11', '2:11', '2:23', '3-10', '2-23', '3:10', '3.21', '3-21']
['2:22', '3.01', '3:01', '3.02', '3:02', '3.02', '3:22', '2.49', '2:38']
['2:58', '2.58', '2:39', '2-25', '2-55', '2:54', '2.18', '2:55', '2:55']


如何给这些结果排序呢?

原地排序(In-place sorting)按你指定的顺序排列数据,然后用排序后的数据替换原来的数据。原来的顺序会丢失。对于列表,sort()方法会提供原地排序

复制排序(Copied sorting)是按你指定的顺序排列数据,然后返回原数据的一个有序副本。原数据的顺序依然保留,只是对一个副本排序。在Python中,sorted()BIF支持复制排序。

函数:sanitize。将冒号和横线转换为点号。

def sanitize(time_string):
    if '-' in time_string:
        spliter = '-'     
    elif ':' in time_string:
        spliter = ':'
    else:
        return (time_string)
    (min,secs) = time_string.split(spliter)
    return (min+'.'+secs)
对上述列表数据进行处理

new_james_list=[]
new_julie_list=[]
new_mikey_list=[]
new_sarah_list=[]
for james_time in james_list:
    new_james_list.append(nester.sanitize(james_time))
for julie_time in julie_list:
    new_julie_list.append(nester.sanitize(julie_time))
for mikey_time in mikey_list:
    new_mikey_list.append(nester.sanitize(mikey_time))
for sarah_time in sarah_list:
    new_sarah_list.append(nester.sanitize(sarah_time))

运行结果:
>>> print(sorted(new_james_list))
['2.01', '2.01', '2.22', '2.34', '2.34', '2.45', '3.01', '3.10', '3.21']
>>> print(sorted(new_julie_list))
['2.11', '2.11', '2.23', '2.23', '2.59', '3.10', '3.10', '3.21', '3.21']
>>> print(sorted(new_mikey_list))
['2.22', '2.38', '2.49', '3.01', '3.01', '3.02', '3.02', '3.02', '3.22']
>>> print(sorted(new_sarah_list))
['2.18', '2.25', '2.39', '2.54', '2.55', '2.55', '2.55', '2.58', '2.58']

如何降序排列?




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值