將乙個function作用於sequence中每個元素身上,最後返回這個被function作用後的list。
在python3中map被封裝成了乙個類,功能依舊是將function作用於要被遍歷的序列,但是最後返回的結果就是乙個物件了。
通過**舉乙個將int轉換為float的例子:
if __name__ ==
'__main__'
: x =[1
,2,3
,4,5
] y =
map(
float
, x)
print
(y)
python2中:
[1.0, 2.0, 3.0, 4.0, 5.0]
python3中:
如何將python3中的物件轉換為python2中的形式呢?
只需要通過list作用於map即可:
if __name__ ==
'__main__'
: x =[1
,2,3
,4,5
] y =
list
(map
(float
, x)
)print
(y)[
1.0,
2.0,
3.0,
4.0,
5.0]
下面是python2中的map()函式示例:
map()是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。
例如,對於list [1, 2, 3, 4, 5, 6, 7, 8, 9]
如果希望把list的每個元素都作平方,就可以用map()函式:
因此,我們只需要傳入函式f(x)=x*x,就可以利用map()函式完成這個計算:
def
f(x)
:return x*x
print
map(f,[1
,2,3
,4,5
,6,7
,8,9
])
輸出結果:
[1, 4, 9, 10, 25, 36, 49, 64, 81]
注意:map()函式不改變原有的 list,而是返回乙個新的 list。
利用map()函式,可以把乙個 list 轉換為另乙個 list,只需要傳入轉換函式。
由於list包含的元素可以是任何型別,因此,map() 不僅僅可以處理只包含數值的 list,事實上它可以處理包含任意型別的 list,只要傳入的函式f可以處理這種資料型別。
任務假設使用者輸入的英文名字不規範,沒有按照首字母大寫,後續字母小寫的規則,請利用map()函式,把乙個list(包含若干不規範的英文名字)變成乙個包含規範英文名字的list:
輸入:[『adam』, 『lisa』, 『bart』]
輸出:[『adam』, 『lisa』, 『bart』]
def
format_name
(s):
s1=s[0:
1].upper(
)+s[1:
].lower();
return s1;
print
map(format_name,
['adam'
,'lisa'
,'bart'
])
map()函式是python內建的高階函式,對傳入的list的每乙個元素進行對映,返回乙個新的對映之後的list
使用map()函式可以實現將其他型別的數轉換成list,但是這種轉換也是有型別限制的,具體什麼型別限制,在以後的學習中慢慢摸索吧。這裡給出幾個能轉換的例子:
**
*將元組轉換成list***
>>
>
map(
int,(1
,2,3
))[1
,2,3
]
**
*將字串轉換成list***
>>
>
map(
int,
'1234')[
1,2,
3,4]
**
*提取字典的key,並將結果存放在乙個list中**
*>>
>
map(
int,)[
1,2,
3]
**
*字串轉換成元組,並將結果以列表的形式返回**
*>>
>
map(
tuple
,'agdf')[
('a',)
,('g',),
('d',)
,('f',
)]
#將小寫轉成大寫
defu_to_l
(s):
return s.upper(
)print
map(u_to_l,
'asdfd'
)
print
map(
none,[
2,4,
6],[
3,2,
1])
判斷list 中重複出現的次數
方法一:
mylist =[1
,2,2
,2,2
,3,3
,3,4
,4,4
,4]myset =
set(mylist)
#myset是另外乙個列表,裡面的內容是mylist裡面的無重複 項
for item in myset:
print
("the %d has found %d"
%(item,mylist.count(item)
))
方法二:
list=[1
,2,2
,2,2
,3,3
,3,4
,4,4
,4]a =
for i in list:
if list.count(i)
>1:
a[i]
= list.count(i)
print
(a)
方法三:利用字典的特性來實現。
>>
>
from collections import counter
>>
> counter([1
,2,2
,2,2
,3,3
,3,4
,4,4
,4])
counter(
)
這裡再增補乙個只用列表實現的方法:
l=[1
,4,2
,4,2
,2,5
,2,6
,3,3
,6,3
,6,6
,3,3
,3,7
,8,9
,8,7
,0,7
,1,2
,4,7
,8,9
] count_times =
for i in l :)
m =max
(count_times)
n = l.index(m)
print
(l[n]
)
方法四:
len
(list)==
len(
set(
list
))
Python內建函式之map 函式
1 介紹 map 函式會根據提供的 函式名 引數對提供的乙個或多個 序列名 引數做對映,即 函式名 引數會逐一對 序列名 引數內的所有元素進行處理,並返回處理後的新列表給 序列名 使用方法 map 函式名 序列名 注意 序列名 引數允許多個,之間用逗號隔開。2 返回值 python2.x的返回值是列...
Python之Map高階函式
map 函式 map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。例如,對於list 1,2,3,4,5,6,7,8,9 如果希望把list的每個元素都作平方,就可以用map 函式 因此...
Python資料之map 函式
map 函式的作用 map 函式是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。用法 map function,iterable,引數function傳的是乙個函式名,可以是python內建...