python 匿名函数,生成器迭代器
来源:互联网 发布:深圳电脑编程培训班 编辑:程序博客网 时间:2024/05/22 03:21
1. 匿名函数
a) 没有名字,lambda[agr1[,arg2…]]:expression
b) 表达式:Sum=lambda agr1,agr2:agr1+agr2;
Sum(10,20)
c) 函数可以做参数传递,
三个大数据用的函数:
foo=[2,3,2,5,6,5,52]
filter(lambdax:x%3=0,foo)//过滤留下能被三整除的数,
map(lambdax:x*2,foo)//遍历列表
mylist=map(lambdax:x,mylist)
for i inmylist:
print(i)
reduce(lambdax,y:x+y,foo)//求foo里面的和
reduce需要导入模块 from functools import reduce
2. Sorted列表排序,小到大排序<asc>正序<dsc>倒序
Sorted(lisr,reverse=True)倒序排序,
3. 随机数:
a) import random
i. random.choice(range(1-34))随机取1-33之间的1个随机数,可能重复
ii. random.choices(range(1-34),k=6,weight=)随机取1-33之间的1个随机数,可能重复
iii. random.sample(range(1,34),6)
4. sort和sorted排序的区别
a) sort没有返回值,原来的列表顺序没了,
b) sorted 返回一个新列表
5. 迭代器和生成器:
a) 迭代器是访问集合内的元素的一种方式,迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问一遍结束.
b) 迭代器协议:对象需要提供next()方法,它要么返回下一个对象,要么引起一个
print i
for line in f: #for循环使用迭代器协议访问文件
print(line)
def gensquares(N):
for i in range(N):
yield i ** 2
for item in gensquares(5):
print item
使用普通函数:
def gensquares(N):
res= []
fori inrange(N):
res.append(i*i)
returnres
for item in gensquares(5):
print item
def index_words(text):
result=[]
if text:
result.append(0)
for index,letter inenumerate(text,1):
if letter == ' ':
result.append(index)
return result
result=index_words("Iam rong")
for a in result:
print(a)
使用生成器的情况:
def index_words(text):
if text:
yield 0;
for index,letter inenumerate(text,1):
if letter==' ':
yield index,letter
result=index_words('Iam rong')
for a in result:
print(a)