python中的map函數應用於每一個可迭代的項,返回的是一個結果list。如果有其他的可迭代參數傳進來,map函數則會把每一個參數都以相應的處理函數進行迭代處理。map()函數接收兩個參數,一個是函數,一個是序列,map將傳入的函數依次作用到序列的每個元素,並把結果作為新的list返回。
示例一:
有一個list, L = [1,2,3,4,5,6,7,8],我們要將f(x)=x^2作用於這個list上,那么我們可以使用map函數處理。 >>> L = [1,2,3,4,] >>> def pow2(x): ... return x*x >>> map(pow2,L) [1, 4, 9, 16] 如果給出了額外的可迭代參數,則對每個可迭代參數中的元素同時的應用‘function’。 >>> def mknum(a,b,c): ... return a*10000+b*100+c ... >>> l1 = [10,20,30] >>> l2 = [40,50,60] >>> l3 = [70,80,90] >>> map(mknum,l1,l2,l3) [104070, 205080, 306090] 結果表明,map函數對每個list取相同的下標做了mknum函數處理。
示例二:利用map()函數,把用戶輸入的不規范的英文名字,變為首字母大寫,其他小寫的規范名字。輸入:[‘adam’, ‘LISA’, ‘barT’],輸出:[‘Adam’, ‘Lisa’,‘Bart’]。
#!/usr/bin/env python
def chname(name):
n = 0
for a in name:
if n==0:
cname = a.upper()
else:
cname = cname + a.lower()
n = n+1
return cname
print map(chname,['bob','jeAN','jessica'])
示例三:
>>> def abc(a, b, c): ... return a*10000 + b*100 + c ... >>> list1 = [11,22,33] >>> list2 = [44,55,66] >>> list3 = [77,88,99] >>> map(abc,list1,list2,list3) [114477, 225588, 336699] 看到並行的效果了吧!在每個list中,取出了下標相同的元素,執行了abc()。
示例四:
>>> list1 = [11,22,33] >>> map(None,list1) [11, 22, 33] >>> list1 = [11,22,33] >>> list2 = [44,55,66] >>> list3 = [77,88,99] >>> map(None,list1,list2,list3) [(11, 44, 77), (22, 55, 88), (33, 66, 99)]
示例五:
>>> def add100(x): ... return x + 100 ... >>> list1 = [11,22,33] >>> map(add100,list1) [101, 102, 103] >>> [add100(i) for i in list1] [101, 102, 103]
示例六:
>>> def abc(a, b, c): ... return a*10000 + b*100 + c ... >>> list1 = [11,22,33] >>> list2 = [44,55,66] >>> list3 = [77,88,99] >>> map(abc,list1,list2,list3) [114477, 225588, 336699]