第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

理解地圖功能

理解地圖功能

開滿天機 2019-07-09 16:48:12
理解地圖功能map(function, iterable, ...)將函數(shù)應(yīng)用于可迭代的每一項,并返回結(jié)果列表。如果傳遞了額外的可迭代參數(shù),函數(shù)必須接受這些參數(shù),并行地應(yīng)用于所有可迭代項。如果一個可迭代項比另一個可迭代項短,則假定擴展時不包含任何項。如果函數(shù)是None,則假定為標識函數(shù);如果存在多個參數(shù),map()返回一個由元組成的列表,其中包含來自所有可迭代項的對應(yīng)項(一種轉(zhuǎn)置操作)??傻鷧?shù)可以是序列或任何可迭代的對象;結(jié)果總是一個列表。這在制造笛卡爾產(chǎn)品中扮演什么角色?content = map(tuple, array)在任何地方放置一個元組有什么效果?我還注意到,如果沒有map函數(shù),輸出是abc有了它,它a, b, c.我想充分理解這個功能。參考定義也很難理解。太多花哨的絨毛了。
查看完整描述

3 回答

?
瀟瀟雨雨

TA貢獻1833條經(jīng)驗 獲得超4個贊

map不是特別的琵琶。我建議使用列表理解來代替:

map(f, iterable)

基本上相當于:

[f(x) for x in iterable]

map它本身不能做笛卡兒積,因為它的輸出列表的長度總是與它的輸入列表相同。不過,您可以通過理解列表來做笛卡兒產(chǎn)品:

[(a, b) for a in iterable_a for b in iterable_b]

語法有點混亂-基本上相當于:

result = []for a in iterable_a:
    for b in iterable_b:
        result.append((a, b))


查看完整回答
反對 回復(fù) 2019-07-09
?
慕少森

TA貢獻2019條經(jīng)驗 獲得超9個贊

map與笛卡兒積一點關(guān)系都沒有,盡管我想一個精通函數(shù)式編程的人可能會想出一些不可能理解的方法來生成一個用map.

map在Python 3中,這相當于:

def map(func, iterable):
    for i in iterable:
        yield func(i)

Python 2的唯一不同之處在于它將構(gòu)建一個完整的結(jié)果列表,以便立即返回所有結(jié)果,而不是yield英。

雖然Python慣例通常傾向于列表理解(或生成器表達式)來實現(xiàn)與調(diào)用map,尤其是當您使用lambda表達式作為第一個參數(shù)時:

[func(i) for i in iterable]

作為您在問題注釋中要求的一個例子-“將字符串轉(zhuǎn)換為數(shù)組”,通過“數(shù)組”,您可能需要元組或列表(它們的行為都有點像來自其他語言的數(shù)組)-

 >>> a = "hello, world"
 >>> list(a)['h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd']>>> tuple(a)('h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd')

使用.map如果您以列單而不是單一的字符串-map可以單獨地對所有這些人進行語言化:

>>> a = ["foo", "bar", "baz"]>>> list(map(list, a))[['f', 'o', 'o'], ['b', 'a', 'r'], ['b', 'a', 'z']]

請注意map(list, a)在Python 2中等效,但在Python 3中需要list如果您想做任何其他事情,而不是將它提供給for循環(huán)(或處理函數(shù),如sum它只需要一個可迭代的,而不需要一個序列)。但也要再次注意,通常傾向于使用列表理解:

>>> [list(b) for b in a][['f', 'o', 'o'], ['b', 'a', 'r'], ['b', 'a', 'z']]


查看完整回答
反對 回復(fù) 2019-07-09
?
慕碼人8056858

TA貢獻1803條經(jīng)驗 獲得超6個贊

map通過將函數(shù)應(yīng)用于源的每個元素創(chuàng)建一個新列表:


xs = [1, 2, 3]


# all of those are equivalent — the output is [2, 4, 6]

# 1. map

ys = map(lambda x: x * 2, xs)

# 2. list comprehension

ys = [x * 2 for x in xs]

# 3. explicit loop

ys = []

for x in xs:

    ys.append(x * 2)

正元map等效于將可迭代的輸入壓縮到一起,然后對中間壓縮列表的每個元素應(yīng)用轉(zhuǎn)換函數(shù)。它是不笛卡爾產(chǎn)品:


xs = [1, 2, 3]

ys = [2, 4, 6]


def f(x, y):

    return (x * 2, y // 2)


# output: [(2, 1), (4, 2), (6, 3)]

# 1. map

zs = map(f, xs, ys)

# 2. list comp

zs = [f(x, y) for x, y in zip(xs, ys)]

# 3. explicit loop

zs = []

for x, y in zip(xs, ys):

    zs.append(f(x, y))

我用過zip在這里,但是map實際上,當可迭代性大小不同時,行為實際上略有不同-正如其文檔中所指出的,它擴展了可訪問性以包含None.


查看完整回答
反對 回復(fù) 2019-07-09
  • 3 回答
  • 0 關(guān)注
  • 325 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號