关闭

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

标签: python
599人阅读 评论(0) 收藏 举报
分类:

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()方法可以创建一个集合

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:41462次
    • 积分:754
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:16篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论