高阶函数
可以使用函数作为参数的函数
def f(func):
sorted:对列表排序,有一个名为key的参数
指定key为abs,根据l的绝对值排序sorted(l,key=abs)
filter:对序列过滤
filter(a,b) a为函数,b为被处理的数据列表,a会对b中的每个元素判断,结果为真择保留,否则舍弃
map/reduce
map:map(a,b),a为函数,b为可迭代的对象,a用来处理b参数
def a(i):
return i**2
map(a,b) 对b的对象中每个数据进行求平方的操作
list(Map(a,b)) 生成新的列表
reduce(a,b) a处理b,但是是叠加的操作
def a(x,y)
return x+y
reduce(a,b)
Python3中 from functools import reduce
lambda :匿名函数
f = lambad x:x*2
f(2) 4
针对二元组列表
list1 = [(‘a’,1),(‘b’,2)]
sorted 排序
list(sorted(list1,lambda x:x[1])) 根据第二个元素排序
def f(x):
if x[1]>1:
return True
else:
return False
list(filter(f,list1)) 根据第二个元素排序
list(filter(lambda x:x[1]>1,list1))
偏函数—默认参数
from functools import partial
def a(i,m=2):
return i*m
a(4)
a(4,4)
切片
获取一个序列(列表或元祖)或者字符串中一部分
l = [‘a’,’b’,’c’,’d’,’e’,’f’,’g’]
copy = l[:] 复制l
l[:4] [‘a’,’b’,’c’,’d’]
l[4:] [‘e’,’f’,’g’]
l[2:5] [‘c’,’d’,’e’]
l[1:-4] [‘b’,’c’]
0 1 2 3 4 5 6
a b c d e f g
-7-6-5-4-3-2 -1
列表解析
列表推导
numbers = [1,2,3,4,5,6,7,8,9,10]
[x for x in numbers if x%2==0] 获取numbers中的偶数
[x*x for x in numbers] 对numbers中的每个数求平方
字典解析
d = {‘a’:1,’b’:2,’c’:3}
{k:v*v for k,v in d.items()}
d = {‘a’:1,’b’:4,’c’:9}
元祖拆包
元祖允许左边的变量依次被元祖的元素赋值
t = (‘TOM’,12)
a,b = t
a = TOM b=12
print(‘I’m {},I’m {} years old’.format(*t))
I'm Tom,I'm 12 years old
迭代器
可迭代的对象就是能用for循环迭代的元素
比如list
for i in list:
print(i)
it = iter(list)
next(it)
调用一次输入一个内容,直到没有内容,报错
it = list.__iter__()
it.__next__()
class Test:
def __init__(self,name):
self.name=name
def __iter__(self):
return self
def __next__(self):
self.name+=1
if self.name >12:
raise StopIteration()
return self.name
a = Test(1)
a就是一个迭代器
next(a) 2
next(a) 3
*能被for循环访问的就是可迭代对象,能被next函数获取下一个值的就是迭代器
*StopIteration