Python自学之高级语法特性
2017-05-21 14:49
651 查看
1-切片
切片用于提取一组数据list、tuple等中的一部分,个人感觉和matlab语法很相似,
例如
切片也同样适用于字符串,
2-迭代
Python可以对任何可迭代对象进行迭代,迭代使用for x in y的形式进行迭代。
如何判断是否为可迭代对象呢?
引入函数
3-列表生成式
最简单的列表生成
增加条件的列表生成
双层列表生成
简单应用,例如把list里面的所有字符串的第一个字母变成小写
4-生成器(generator)
利用列表生成式,我们可以一次性生成许多数据,如果我们只需要使用其中一部分,进行动态的生成,不用一次性占用很多内存,循环进行到哪里,就计算出下一个值,就可以使用生成器,生成器的使用有两种方法,
第一种,使用列表生成的generator:
第二种针对无法使用列表生成式写出的复杂过程,可以使用函数进行generator,与一般函数不同的是,一般函数执行函数内部语句直到执行到return就退出函数体,generator的函数使用yield表示生成一次,执行到第一个yield时候就出该值,然后从这个位置开始继续执行下去,执行到最后一句语句或者return的时候就退出函数体。
上述两种方法都可以使用next()函数进行不断求得下一个数值,
Tips
使用生成器生成的序列是一种惰性序列,他只在你需要的范围内在需要的时候生成,并且可以是一个无限序列,
切片用于提取一组数据list、tuple等中的一部分,个人感觉和matlab语法很相似,
例如
l[0:3] #表示取l[0],l[1],l[2] l[:3] #与上面等价,初始或者结束为首尾位置,则可以缩写 l[-2:0] #表示取倒数第一个l[-1]和倒数第二个l[-2] l[-2:] #与上面等价 l[0:5:2]#表示以2个2个取,得到l[0],l[2],l[4] l[::2] #表示2个2个取整个数据集
切片也同样适用于字符串,
'ABCDEFG'[0:2] #结果取AB
2-迭代
Python可以对任何可迭代对象进行迭代,迭代使用for x in y的形式进行迭代。
#d = {'a'='1','b'='2'} for key in d: #遍历d的key,输出 print(key) for value in d.values() #用于迭代dict的value for x,y in d.items() #用于同时迭代dict的key 和value
如何判断是否为可迭代对象呢?
引入函数
>>> from collections import Iterable >>> isinstance('abc', Iterable) # str是否可迭代 True >>> isinstance([1,2,3], Iterable) # list是否可迭代 True >>> isinstance(123, Iterable) # 整数是否可迭代 False
3-列表生成式
最简单的列表生成
[x + 1 for x in range(1,5)] [2,3,4,5]
增加条件的列表生成
[x + 1 for x in range(1,5) if x%2 ==0] [3,5]
双层列表生成
[x + y for x in 'ABC' for y in '123'] ['A1','A2','A3','B1','B2','B3','C1''C2','C3']
简单应用,例如把list里面的所有字符串的第一个字母变成小写
m = ['He','She'] [l[0].lower() + l[1:] for l in m] #输出['he','she']
4-生成器(generator)
利用列表生成式,我们可以一次性生成许多数据,如果我们只需要使用其中一部分,进行动态的生成,不用一次性占用很多内存,循环进行到哪里,就计算出下一个值,就可以使用生成器,生成器的使用有两种方法,
第一种,使用列表生成的generator:
>>>g = (x+1 for x in range(0,4)) #将[]变成() >>>g #不会输出,因为这个时候g是一个generator,还未开始动态生成 >>>g = (x+1 for x in range(0,4)) >>>for value in g: print(value) 1 2 3 4
第二种针对无法使用列表生成式写出的复杂过程,可以使用函数进行generator,与一般函数不同的是,一般函数执行函数内部语句直到执行到return就退出函数体,generator的函数使用yield表示生成一次,执行到第一个yield时候就出该值,然后从这个位置开始继续执行下去,执行到最后一句语句或者return的时候就退出函数体。
def tri(n): l = [1] while n > 0: n =n - 1 yield l l = [l[x] + l[x+1] for x in range(len(l)-1)] l.insert(0,1) l.append(1) for x in tri(4): print(x) #结果 #[1] #[1,1] #[1,2,1] #[1,3,3,1]
上述两种方法都可以使用next()函数进行不断求得下一个数值,
Tips
使用生成器生成的序列是一种惰性序列,他只在你需要的范围内在需要的时候生成,并且可以是一个无限序列,
相关文章推荐
- Python自学笔记之高级特性——生成器
- 【笔记】Python 3自学笔记之高级特性
- Python自学笔记之高级特性1——切片和迭代
- Python自学笔记之高级特性2——列表生成式
- Python高级特性:Iterators、Generators和itertools
- Python学习笔记 - 高级特性
- python高级特性(1):切片
- Python高级特性:利用类构造及析构原理实现单实例模式
- Python 高级特性 : 生成器
- Python高级特性切片(Slice)操作详解
- Python高级特性——学习笔记
- python 高级特性
- python高级特性
- python学习之高级特性:
- Python高级特性之:List Comprehensions、Generator、Dictionary and set comprehensions
- Python的高级特性8:你真的了解类,对象,实例,方法吗
- Python高级特性
- python高级特性
- Python高级特性(切片 迭代 列表生成式 生成器 迭代器)学习笔记
- python 笔记3--高级特性