python再复习(4)高级特性、函数式编程以及用法小结
2017-09-06 11:41
761 查看
环境:win7 pycharmCE_2017.2 python3.6.2
第四篇呢,把高级特性回顾一下,顺便把常用的对字符串、列表的用法小结一下,这篇长期更新这个用法小结。7.高级特性
判断类型#判断是否可迭代 >>> from collections import Iterable >>> isinstance('abc', Iterable) True #判断是否是字符串 >>> x = 'abc' >>> y = 123 >>> isinstance(x, str) True >>> isinstance(y, str) False
列表的下标循环
>>> for i, value in enumerate(['A', 'B', 'C']): ... print(i, value) ... 0 A 1 B 2 C
列表生成式
#带条件的 >>> temp=[x for x in range(0,500) if x%2==0 and x%7==0] >>> temp [0, 14, 28, 42, 56, 70, 84, 98, 112, 126, 140, 154, 168, 182, \ 196, 210, 224, 238, 252, 266, 280, 294, 308, 322, 336, 350, \ 364, 378, 392, 406, 420, 434, 448, 462, 476, 490] >>> #双层for >>> [a+b for a in['hello','bye'] for b in ['john','tom','lily']] ['hellojohn', 'hellotom', 'hellolily', 'byejohn', 'byetom', 'byelily'] >>> #字典的列表生成 >>> d = {'x': 'A', 'y': 'B', 'z': 'C' } >>> [k + '=' + v for k, v in d.items()] ['x=A', 'y=B', 'z=C'] >>>
生成器:
在Python中,这种一边循环一边计算的机制,称为生成器:generator。
方法1:将列表生成式的[]改成()
方法2:函数中带有yield关键字
例如:
#杨辉三角 def triangles(): L = [1] while True: yield L L.append(0) L = [L[a] + L[a - 1] for a in range(len(L))]
map/reduce:
>>> def tempK(x): ... return x*x ... >>> tempP=[1,2,3,5,8] >>> tempL=list(map(tempK,tempP)) >>> tempL [1, 4, 9, 25, 64] >>> from functools import reduce >>> def tempK(x,y): ... return x+y ... >>> reduce(tempK,tempP) 19 >>>
filter暂时没什么说的:
def is_palindrome(n): if str(n) == str(n)[::-1]: return int(n) output = filter(is_palindrome, range(1, 200)) print(list(output)) #结果: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]
sorted()暂时没什么说,是一个高阶函数。
7.1用法小结
首先,记住区间是前闭后开的。★列表、元组取数
用索引。用切片,怎么取都可以。
#新建一个列表 >>> a=list(range(0,20)) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] #取前5个数 >>> b=a[0:5] >>> b [0, 1, 2, 3, 4] #取后5个数 >>> b=a[-5:] >>> b [15, 16, 17, 18, 19] #取中间,第i到i+n个数 >>> b=a[4:9] >>> b [4, 5, 6, 7, 8] #步长,跳着取,隔n步取数 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] >>> b=a[::2] >>> b [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] >>> #第5个到第10个隔3个取一个 >>> b=a[5:10:3] >>> b [5, 8] #列表倒序,倒过来输出: >>> b=a[::-1] >>> b [19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] >>>
★列表、元组取数
相关文章推荐
- Python笔记(二)——高级特性|函数式编程
- python高级特性、函数式编程、面向对象
- Python的高级特性4:函数式编程
- Python的函数以及函数式编程
- python中函数的高级特性以及生成器
- 用Python的函数式编程特性解释Y Combinator(仿JavaScript版)
- Python编程_Lesson016_类的高级用法
- Python的一些高级特性以及反序列化漏洞
- python第七天学习记录——面向对象高级以及socket编程
- MVC中如何使用Jquery的用法小结(高级编程)
- Python高级特性: 函数编程 lambda, filter,map,reduce
- python 函数式编程 map、reduce用法
- 读廖雪峰的 Python 教程小结--------Python高级特性
- JavaSE复习之十三 高级特性:网络编程
- JavaSE复习之十五 高级特性:网络编程
- TCP wrappers用法以及高级特性
- python -- 函数以及函数式编程
- Python编程_Lesson016_类的高级特性_错误处理
- python的函数式编程知识小结
- MVC中如何使用Jquery的用法小结(高级编程)