*args以元組方式收集參數(shù) 可以先以元組形式收集參數(shù) 再將元組作為參數(shù)
**args是以字典形式收集參數(shù)
>>> def tf(x,*ff):\
... print x,ff
...
>>> tf(1,3,4,5,6)
1 (3, 4, 5, 6)
>>>
python中的幾個(gè)特殊函數(shù)
1.lambda
#coding:utf-8
nums=range(0,100,3)
print nums
#每個(gè)元素加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的元素取出來(lái)
print filter(lambda x:x>0 ,a_num_list)
- xrange和range的區(qū)別 xrang返回的是迭代器對(duì)象 range返回的是列表 XRANG的執(zhí)行效率更高
生成器 與迭代器原理類似
>>> 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()
- 生成器創(chuàng)建對(duì)象之后 調(diào)用next()開(kāi)始執(zhí)行 遇到y(tǒng)ield 掛起 返回值
再次執(zhí)行next()繼續(xù)向下執(zhí)行 遇到y(tǒng)eild掛起 返回值 - send()方法需要在掛起后才可以執(zhí)行 throw可以拋出異常 close可以關(guān)閉生成器