[Head First Python]6. 定制数据对象:打包代码与数据

相同功能,演进实现

数据文件

sarah2.txt

sarah Sweeney,2002-6-17,2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55

1- 返回dict

return({‘Name‘:data_list.pop(0),

‘DOB‘:data_list.pop(0),

‘Time‘:str( sorted( set([sanitize(t) for t in data_list] ) )[0:3])})

 1 def sanitize(time_string):
 2     if ‘-‘ in time_string:
 3         splitter = ‘-‘
 4     elif ‘:‘ in time_string:
 5         splitter = ‘:‘
 6     else:
 7         return (time_string)
 8
 9     (mins, secs) = time_string.split(splitter)
10     return(mins + ‘.‘ + secs)
11
12 def get_coach_data(filename):
13     try:
14         with open(filename) as f:
15             data = f.readline()
16             data_list = data.strip().split(‘,‘)
17             return({‘Name‘:data_list.pop(0),
18                     ‘DOB‘:data_list.pop(0),
19                     ‘Time‘:str( sorted( set([sanitize(t) for t in data_list]  ) )[0:3])})
20     except IOError as err:
21         print("file err:" + str(err))
22         return(none)
23
24
25 julie = get_coach_data(‘julie2.txt‘)
26 james = get_coach_data(‘james2.txt‘)
27 sarah = get_coach_data(‘sarah2.txt‘)
28 mikey = get_coach_data(‘mikey2.txt‘)
29
30 print( julie[‘Name‘] + "‘s faster time are:" + julie[‘Time‘])
31 print( james[‘Name‘] + "‘s faster time are:" + james[‘Time‘])
32 print( sarah[‘Name‘] + "‘s faster time are:" + sarah[‘Time‘])
33 print( mikey[‘Name‘] + "‘s faster time are:" + mikey[‘Time‘])

2- 返回类  return ( Athlete(datalist.pop(0), datalist.pop(0), datalist))

 1 def sanitize(time_string):
 2     if ‘-‘ in time_string:
 3         splitter = ‘-‘
 4     elif ‘:‘ in time_string:
 5         splitter = ‘:‘
 6     else:
 7         return(time_string)
 8
 9     (mins, secs) = time_string.split(splitter)
10     return(mins + "." + secs)
11
12 class Athlete:
13     def __init__(self, a_name, a_dob = None, a_time = []):
14         self.name = a_name
15         self.dob = a_dob
16         self.times = a_time
17
18     def top3(self):
19         return( sorted(set([sanitize(t) for t in self.times]))[0:3] )
20
21     def add_time(self,time_value):
22         self.times.append(time_value)
23
24     def add_times(self,list_of_times):
25         self.times.extend(list_of_times)
26
27
28 def get_coach_data(filename):
29     try:
30         with open(filename) as f:
31             data = f.readline();
32             datalist = data.strip().split(‘,‘)
33             return ( Athlete(datalist.pop(0), datalist.pop(0), datalist))
34     except IOError as err:
35         print(‘file err:‘ + str(err))
36         return(none)
37
38
39 julie = get_coach_data(‘julie2.txt‘)
40 james = get_coach_data(‘james2.txt‘)
41 sarah = get_coach_data(‘sarah2.txt‘)
42 mikey = get_coach_data(‘mikey2.txt‘)
43
44 print(julie.name + "‘s faster times are:" + str(julie.top3()))
45 print(james.name + "‘s faster times are:" + str(james.top3()))
46 print(sarah.name + "‘s faster times are:" + str(sarah.top3()))
47 print(mikey.name + "‘s faster times are:" + str(mikey.top3()))
48
49 vera = Athlete(‘vera vi‘)
50 vera.add_time(‘1.30‘)
51 print(vera.top3())
52 vera.add_times([‘1.00‘,‘0.3‘,‘1.2‘])
53 print(vera.top3())

3- 继承python内置list

 1 class Athletelist(list):
 2     def __init__(self, a_name, a_dob = None, a_times = []):
 3         list.__init__([])
 4         self.name = a_name
 5         self.dob = a_dob
 6         self.extend(a_times)
 7     def top3(self):
 8         return( sorted( set([sanitize(t) for t in self] ) )[0:3])
 9
10 def sanitize(time_string):
11     if ‘-‘ in time_string:
12         splitter = ‘-‘
13     elif ‘:‘ in time_string:
14         splitter = ‘:‘
15     else:
16         return(time_string)
17
18     (mins, secs) = time_string.split(splitter)
19     return(mins + "." + secs)
20
21 #vera = Athletelist("vera vi")
22 #vera.append(‘1.31‘)
23 #print(vera.top3())
24 #vera.extend(["1","2","0"])
25 #print(vera.top3())
26
27 def get_coach_data(filename):
28     try:
29         with open(filename) as f:
30             data = f.readline();
31             datalist = data.strip().split(‘,‘)
32             return ( Athletelist(datalist.pop(0), datalist.pop(0), datalist))
33     except IOError as err:
34         print(‘file err:‘ + str(err))
35         return(none)
36
37
38 julie = get_coach_data(‘julie2.txt‘)
39 james = get_coach_data(‘james2.txt‘)
40 sarah = get_coach_data(‘sarah2.txt‘)
41 mikey = get_coach_data(‘mikey2.txt‘)
42
43 print(julie.name + "‘s faster times are:" + str(julie.top3()))
44 print(james.name + "‘s faster times are:" + str(james.top3()))
45 print(sarah.name + "‘s faster times are:" + str(sarah.top3()))
46 print(mikey.name + "‘s faster times are:" + str(mikey.top3()))

[Head First Python]6. 定制数据对象:打包代码与数据

时间: 2024-10-18 04:44:30

[Head First Python]6. 定制数据对象:打包代码与数据的相关文章

六、定制数据对象(Python的面向对象) ----- 打包代码与数据

创建Python字典 python字典即为键值对,相当于Java中的map,其创建的两种形式: a = {} # 普通方式 b = dict() # 使用工厂函数 字典的赋值与访问 #创建字典 >>> cleese['Name'] = 'John Cleese' >>> cleese['Occupations'] = ['actor','comedian','writer','film producer'] >>> palin = {'Name':'M

Oracle---常用SQL语法和数据对象

1.INSERT  (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSERT INTO 表名(字段名1, 字段名2, ……)  SELECT 字段名1, 字段名2, …… FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号''. 字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校

ORACLE 常用的SQL语法和数据对象

一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);  INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’  如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号''.  字符串类型的字段值超

数据挖掘:数据(数据对象与属性类型)

一.概述 现实中的数据一般有噪声.数量庞大并且可能来自异种数据源. 数据集由数据对象组成,一个数据对象代表一个实体. 数据对象:又称样本.实例.数据点或对象. 数据对象以数据元组的形式存放在数据库中,数据库的行对应于数据对象,列对应于属性. 属性是一个数据字段,表示数据对象的特征,在文献中,属性.维度(dimension).特征(feature).变量(variance)可以互换的使用. "维",一般用在数据仓库中. "特征",一般用在机器学习中. "变量

Python学习笔记_Chapter 6定制数据对象

1. 有用的BIF a. 判断字符串中是否包含子字符串 1 if s_a in s_b: b. pop() 描述:从指定的列表位置删除并返回一个数据项. 1 (sarah_name,sarah_dob)=l_rah.pop(0),l_rah.pop(0) 2 #pop(0)中0位置为list中第一个数据项 3 #第一次执行pop赋值给sarah_name c. strip() 输入的是字符串,返回的是列表 d.open 读文件时可以多种方式打开文件,取出的数据是不同的,可以是文本也可以是二进制.

【Python】[07]定制数据对象

这章主要学习数据字典和类. 字典 python中字典的定义为:一个内置的数据结构(内置于python中),允许将数据与键而不是数字关联.这样可以使内存中的数据与实际数据的结构保持一致. 创建空字典的方式: 1.使用大括号来创建一个空字典,如:cleese={} 2.使用dic()工厂函数来创建空字典,如:cleese=dic() 通过将值与键关联,可以向空字典中增加数据,这两种方法向字典添加数据的区别是: 第一种创建方式可以分步向空字典中添加数据 cleese["Name"]=&quo

【七】定制数据对象

一:编写程序 现如今有一组新的秒表数据,需要对其数据进行提取 sarah.txt sara,2002-9-9,2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55 1.将sarah.txt中的名字与成绩打印出来(使用读取文件的方式) #coding=utf-8 #打印出秒表数据的姓名与前三列的成绩 def get_file(filename): try: with open(filename) as f: data=f.readline().strip().s

Python数据对象的编码和解码,json和pickle模块,base64模块的简单使用

1.面向对象 对象:生活中的客观事物 类:对事物的抽象,在代码中实现class类型 类属性:这类事物具有的特点或者属性 类方法:这类事物具有的行为,可以实现的方法 实例:使用之前对类的实例化之后的结果 实例属性:对象具有的一些描述对象或者形容对象的属性,对象具体具有的特性 实例方法:对象具有的方法,行为动作 1.查看对象所拥有的方法 dir(对象) 例如 print(dir(列表))1.类中的实例(类)属性和方法命名风格 属性:名词 方法:动词 2.Python中万物皆对象 _对象名,对象私有化

Python中的函数对象与闭包

函数在Python中是第一类对象,可以当做参数传递给其他函数,放在数据结构中,以及作为函数的返回结果. 下面的例子为接受另外一个函数作为输入并调用它 1 #foo.py 2 def callf(func): 3 return func() 使用上面的函数: 1 import foo 2 def helloworld(): 3 return 'Hello,World' 4 5 print foo.callf(helloworld) >>>‘Hello,World’ 2.把函数当做数据处理时