head first python第五章
2017-02-21 22:21
267 查看
该章为数据处理章节,主要介绍了集合类型list与set
包括列别推导式,序列操作符切片[:],sorted与list.sort区别等
如下示例:l_a的值并没有发生改变,他返回一个值。
如果要改变原来对象,需给原有变量赋值
用于判断一个元素是否属于一个序列。
以上为用法,只是要告别find了。。。
2.连接操作符
(+)
不推荐使用,这个操作不是最快或者说最有效的。
对字符串来说,这个操作不如把所有字符串放到一个列别或可迭代对象种,然后调用一个join方法 节约内存;
类似的,对于列表来说,推荐用extend()方法把两个或多个列表对象合并。
当需要把两个对象简单相加时采用
核心编程中的例子已然当掉了
3.5 range返回的是一个range对象不再是一个list
于是乎~~~~
3.重复操作符
b113
返回一个重复了 copies_int的新序列
4.切片操作符
5.用步长索引进行扩展的切片操作
6.切片索引的更多内容
切片索引不会out_of_range
每次把最后一个砍掉
核心编程第二版里面介绍的p105 页 [None]+range(-1,-len(s),-1):
已经不好使了。因为range返回range对象,不是list了~~~
三 去掉list中重复的值
恩,好简单~
原来的list_a 并没有改变
四 sorted与list.sort()的区别
sorted非原址排序 list.sort()原址排序
里面有个很重要的地方是 list.sort的返回值为None~
五 本章源码
包括列别推导式,序列操作符切片[:],sorted与list.sort区别等
一 列表推导式:
用于操作遍历集合对象的值。返回一个新的集合类型。原来的数据未发生改变[expr for value in collection ifcondition]
如下示例:l_a的值并没有发生改变,他返回一个值。
>>> l_a=[1,2,3,4,5,6] >>> [s+1 for s in l_a] [2, 3, 4, 5, 6, 7] >>> print(l_a) [1, 2, 3, 4, 5, 6] >>>
如果要改变原来对象,需给原有变量赋值
>>> l_a=[s+1 for s in l_a] >>> print(l_a) [2, 3, 4, 5, 6, 7]
二 序列类型操作符
1.成员关系操作符用于判断一个元素是否属于一个序列。
对象 [not] in 序列
>>> l_a=[1,2,3,4,5,6] >>> 1 in l_a True >>> 9 in l_a False >>> 9 not in l_a True >>>
以上为用法,只是要告别find了。。。
2.连接操作符
(+)
不推荐使用,这个操作不是最快或者说最有效的。
对字符串来说,这个操作不如把所有字符串放到一个列别或可迭代对象种,然后调用一个join方法 节约内存;
join(...) S.join(iterable) -> str Return a string which is the concatenation of the strings in the iterable. The separator between elements is S.
Help on method_descriptor: extend(...) L.extend(iterable) -> None -- extend list by appending elements from the iterable
类似的,对于列表来说,推荐用extend()方法把两个或多个列表对象合并。
当需要把两个对象简单相加时采用
核心编程中的例子已然当掉了
3.5 range返回的是一个range对象不再是一个list
Traceback (most recent call last): File "<pyshell#53>", line 1, in <module> for i in [None] +range(-1,-len(s),-1) : TypeError: can only concatenate list (not "range") to list >>>
于是乎~~~~
3.重复操作符
b113
sequence* copies_int >>> st=s*8 >>> print(st) abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde
返回一个重复了 copies_int的新序列
4.切片操作符
>>> list_a=[1,2,3,4,5,6,7] >>> list_a[0:3] >>> list_a[0:6:2] [1, 3, 5] >>> list_a[0:2:2] [1] >>> list_a[0:2:2] >>> list_a[:-1] #这里感觉好666 [1, 2, 3, 4, 5, 6] >>> list_a[:-2] [1, 2, 3, 4, 5] >>>
5.用步长索引进行扩展的切片操作
>>> list_a[::-1] #翻转操作 [7, 6, 5, 4, 3, 2, 1] >>> list_a[::2] #隔一个取一个的操作 [1, 3, 5, 7]
6.切片索引的更多内容
切片索引不会out_of_range
每次把最后一个砍掉
>>> for i in range(-1,-len(list_a),-1): print(list_a[:i]) [1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5] [1, 2, 3, 4] [1, 2, 3] [1, 2] [1]
核心编程第二版里面介绍的p105 页 [None]+range(-1,-len(s),-1):
已经不好使了。因为range返回range对象,不是list了~~~
三 去掉list中重复的值
>>> list_a.append(6) >>> list_a [1, 2, 3, 4, 5, 6, 7, 6] >>> set_a=set(list_a) >>> set_a {1, 2, 3, 4, 5, 6, 7} >>> list_a [1, 2, 3, 4, 5, 6, 7,
恩,好简单~
原来的list_a 并没有改变
四 sorted与list.sort()的区别
sorted非原址排序 list.sort()原址排序
里面有个很重要的地方是 list.sort的返回值为None~
sort(...) L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
五 本章源码
import os os.chdir('D:\python\hfpy_ch5_data') def GetFileDate(filename): try: with open(filename,'r') as data_file: data=data_file.readline() return data.strip('\n').split(',') except IOError as err: print(str(err)) return None def sanitize(each_data): if '-' in each_data: (min,sec)=each_data.split('-') print(each_data) return (min+':'+sec) if '.' in each_data: print(each_data) (min,sec)=each_data.split('.') return (min+':'+sec) if ':' in each_data: return each_data james_data= GetFileDate('james.txt') list_james=sorted(set([sanitize(s) for s in james_data]))[0:3] print(list_james) print(james_data)
相关文章推荐
- Head First Python 第二章 函数模块&第三章 文件与异常&第四章 持久存储&第五章 处理数据
- Python初入门(五)(Head First Python 第五章 处理数据)
- 《Head First Python》笔记 第五章 Comprehending Data
- HeadFirstPython---------(三)第五章(推倒数据__处理数据)
- Head First Python(第五章)
- Head First C# 中文版 图文皆译 第五章 封装 page192
- Head First C# 中文版 图文皆译 第五章 封装 page193
- Head First C# 中文版 图文皆译 第五章 封装 page182
- Head First C# 中文版 图文皆译 第五章 封装 page183
- Head First C# 中文版 图文皆译 第五章 封装 page178
- Head First C# 中文版 图文皆译 第五章 封装 page201
- Head First C# 中文版 图文皆译 第五章 封装 page191
- Head First C# 中文版 图文皆译 第五章 封装 page177
- Head First C# 中文版 图文皆译 第五章 封装 page203
- Head First C# 中文版 图文皆译 第五章 封装 page198
- Head First C# 中文版 图文皆译 第五章 封装 page199
- Head First C# 中文版 图文皆译 第五章 封装 page194
- Head First C# 中文版 图文皆译 第五章 封装 page181
- Head First C# 中文版 图文皆译 第五章 封装 page176
- Head First C# 中文版 图文皆译 第五章 封装 page185