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

原创 2013年12月05日 10:20:59

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

相关文章推荐

python系列学习七——使用sqlite管理数据

1. 前言         Python2.5以上版本都提供了对sqlite的支持,只需导入sqlite3库,使用python标准化数据库api即可。 2. 如何使用sqlite3# 导入sqlite...

python系列学习六——移动开发

1. SDK下载 SDK下载地址 注:该SKD需要预先安装jre(Java Runtime Environment) 2. 配置SDK和模拟器 打开 SDK  Manager,安装所需要的packag...

python系列学习五——web开发

1

python系列学习——移动开发

[-] SDK下载配置SDK和模拟器安装配置android脚本环境测试Pythonjson模块android应用 1. SDK下载 SDK下载地址 注:该SKD需要预先安装jre(Java ...

windows核心编程系列学习记录1——错误处理

记录下自己的小小心得,转载注明出处!

python系列之数据处理编程实例

要求:分别以james,julie,mikey,sarah四个学生的名字建立文本文件,分别存储各自的成绩,时间格式都精确为分秒,时间越短成绩越好,分别输出每个学生的无重复的前三个最好成绩,且分秒的分隔...

springMVC笔记系列(16)——模型数据处理篇 之 @ModelAttribute注解

说明:本文章的内容转载至:https://my.oschina.net/happyBKs/blog/420310 如有侵权的地方,请联系本人,本人将会立即删除!在实际开发中可能遇到这样一种开发场景...

海量数据处理系列——C语言下实现bitmap算法

bitmap是一个十分有用的结构。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 如果...
  • lile269
  • lile269
  • 2011年05月02日 13:19
  • 5637

springMVC笔记系列(13)——模型数据处理篇 之 ModelAndVIew对象

说明:本文章的内容转载至:https://my.oschina.net/happyBKs/blog/420310 如有侵权的地方,请联系本人,本人将会立即删除!之前的几篇文章介绍了处理请求的各个注解...

海量数据处理系列——BloomFilter

引自http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.html Bloom Filter是由Bloom在1970年提出的一种多哈希函数映...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python系列学习三 —— 数据处理
举报原因:
原因补充:

(最多只允许输入30个字)