python語法之map 函式

2021-09-20 06:49:49 字數 4067 閱讀 9379

將乙個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內建...