您的位置:首页 > 编程语言 > Python开发

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]
>>>


★列表、元组取数

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: