python系列学习三 —— 数据处理

本文介绍了Python数据处理的几个关键概念:如何使用sort()和sorted()进行排序,包括原地排序和复制排序;列表推导式用于快速创建新列表;通过切片操作获取列表部分元素;利用集合去重。总结了这些操作在实际编程中的应用。

1. 排序

1)原地排序(In-place sorting)

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

2)复制排序(Copied sorting)

    按照指定的顺序排列数据,返回数据的一个有效副本,原数据的顺序依然保留。在python中,sorted()支持复制排序。


注:默认地,sort()和sorted()都会按升序都数据排序,若要以降序对数据排序,需要向sort()或sorted()方法传入参数reverse=True,python会负责处理。

2. 推导列表

将一个列表转化为另一个列表需要进行以下4步:

1)创建一个新列表来存放转化后的数据

2)迭代处理原列表中的各个数据项

3)每次迭代时完成转换

4)将转化后的数据追加到新列表

格式:

        new_list = [ {convert item} for item in var_list]


3. 列表分片

var_list[srart:end] 返回列表var_list中从第srart到(不包括)第end项的数据项


4. 用集合删除重复项

python中集合最突出的特性是集合中的数据项是无序的,而且不允许重复。

集合创建:

        distances = set(var_list)

    或distances = {1,2,3,4,5,6,4}



小应用:

#!/usr/local/bin/python
# coding=utf-8

# sanitize
def sanitize(var_string):
    if '-' in var_string:
        sep = '-'
    elif ':' in var_string:
        sep = ':'
    else:
        return var_string
    (min, sec) = var_string.split(sep)
    return min + '.' + sec

#james_list = []
#julie_list = []
#mikey_list = []
#sarah_list = []
try:
    with open('james.txt') as james_file, open('julie.txt') as julie_file, open('mikey.txt') as mikey_file, open('sarah.txt') as sarah_file:
        james = james_file.readline().strip().split(',')      
        julie = julie_file.readline().strip().split(',')      
        mikey = mikey_file.readline().strip().split(',')      
        sarah = sarah_file.readline().strip().split(',')
        #for item in james:
        #    james_list.append(sanitize(item))
        #for item in julie:
        #    julie_list.append(sanitize(item))
        #for item in mikey:
        #    mikey_list.append(sanitize(item))
        #for item in sarah:
        #    sarah_list.append(sanitize(item))
        # sorted() function will return a new sorted list
        james_list = sorted(set([sanitize(item) for item in james]))[0:3]
        julie_list = sorted(set([sanitize(item) for item in julie]))[0:3]
        mikey_list = sorted(set([sanitize(item) for item in mikey]))[0:3]
        sarah_list = sorted(set([sanitize(item) for item in sarah]))[0:3]
        print james_list
        print julie_list
        print mikey_list
        print sarah_list
        
        #james_unique = []
        #for item in james_list:
        #    if item not in james_unique:
        #        james_unique.append(item)
        #print james_unique[0:3]
except IOError as err:
    print 'File error:' + str(err)

小结:

1)sort()方法可以在原地改变列表的排序, sorted()方法通过提供复制排序可以对几乎任何数据结构排序,向sorte()或sorted()传入reverse=True可以按降序排列数据

2)列表推导可以在一行上指定一个转换而不使用迭代

3)要访问一个列表中的多个数据项,可以使用列表分片

4)使用set()方法可以创建一个集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值