python再复习(4)高级特性、函数式编程以及用法小结

来源:互联网 发布:c语言多重循环break 编辑:程序博客网 时间:2024/05/29 17:36

环境: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 A1 B2 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]>>>

★列表、元组取数

阅读全文
0 0
原创粉丝点击