*args以元组方式收集参数 可以先以元组形式收集参数 再将元组作为参数
**args是以字典形式收集参数
>>> def tf(x,*ff):\
... print x,ff
...
>>> tf(1,3,4,5,6)
1 (3, 4, 5, 6)
>>>
python中的几个特殊函数
1.lambda
#coding:utf-8
nums=range(0,100,3)
print nums
#每个元素加10
num_1=[x+10 for x in nums]
print num_1
nf=lambda x:x+10
num_2=[]
for i in nums:
num_2.append(nf(i))
print num_2
2.map
map(function,args)
new_l=map(nf,nums)
print new_l
3.reduce
new_2=reduce(lambda x,y:x+y,nums)
print new_2
与map用法类似
4.filter
a_num_list=range(-3,3)
#把其中大于0的元素取出来
print filter(lambda x:x>0 ,a_num_list)
- xrange和range的区别 xrang返回的是迭代器对象 range返回的是列表 XRANG的执行效率更高
生成器 与迭代器原理类似
>>> my_gen=(x*x for x in range(4))
>>> my_gen
<generator object <genexpr> at 0x7f3765842050>
>>> for i in my_gen:\
... print i
...
0
1
4
9
生成生成器的一种方式 生成器解析式 与列表解析类似 () []不同
def gen():
yield 1
yield 2
yield 3
print gen()
g=gen()
print g.next()
- 生成器创建对象之后 调用next()开始执行 遇到yield 挂起 返回值
再次执行next()继续向下执行 遇到yeild挂起 返回值 - send()方法需要在挂起后才可以执行 throw可以抛出异常 close可以关闭生成器
网友评论