哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python中map函數(shù)的解釋及可視化

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-10 19:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

先重溫一下迭代(Iteration)、迭代器對(duì)象(iterable)、迭代器(iterator )的概念:

Iteration是計(jì)算機(jī)科學(xué)的通用術(shù)語(yǔ),它是指對(duì)一組元素執(zhí)行一項(xiàng)操作,一次執(zhí)行一個(gè)元素。一個(gè)很好的例子是循環(huán) - 它適用于每個(gè)單獨(dú)的項(xiàng)目,直到整個(gè)項(xiàng)目集運(yùn)行完畢為止。

Iterable是可以遍歷的對(duì)象(譯者注:在Python中所有東西都是object, 比如說(shuō)變量,容器,類(lèi)),iterable是可以產(chǎn)生iterator的object。

iterator是表示數(shù)據(jù)流的對(duì)象,它一次返回一個(gè)元素的數(shù)據(jù)。它還會(huì)記住其在迭代過(guò)程中的位置。本質(zhì)上,它控制應(yīng)如何迭代可迭代對(duì)象。

map()的用法

map()函數(shù)以迭代的方式將提供的功能應(yīng)用于每個(gè)項(xiàng)目,結(jié)果是作為迭代器的map對(duì)象。語(yǔ)法:

map(func, *iterables)

如果沒(méi)有map(),我們將不得不編寫(xiě)復(fù)雜的代碼以在多個(gè)項(xiàng)目上“循環(huán)”給定的函數(shù)。以一個(gè)整潔的小實(shí)驗(yàn)為例:我們有一個(gè)10個(gè)單詞的列表。

test_list = ["effort", "circle", "yearly", "woolen", "accept", "lurker",
            "island", "faucet", "glossy", "evader"]

我們懷疑其中一些可能是abcderian(按字母順序出現(xiàn)的)。我們編寫(xiě)一個(gè)函數(shù)is_abecedarian來(lái)檢查給定的單詞是否為abcderian:

def is_abecedarian(input_word):
    index = 0
    for letter in input_word[0:-1]:
        if ord(input_word[index]) > ord(input_word[index + 1]):
            return False
        else:
            index += 1
    return True

現(xiàn)在,我們想將函數(shù)應(yīng)用于單詞列表,并創(chuàng)建一個(gè)將包含True和False值的新列表,以表明某些單詞是否確實(shí)是abcderian。

下面方法涉及初始化一個(gè)新列表,然后使用for循環(huán)遍歷列表元素:

value_list = []
for item in test_list:
    value = is_abecedarian(item)
    value_list.append(value)

輸出:

[True, False, False, False, True, False, False, False, True, False]

如果用map(),我們可以將上面的代碼簡(jiǎn)化為一個(gè)簡(jiǎn)潔的小代碼:

map(is_abecedarian, test_list)

請(qǐng)注意map()不會(huì)返回列表,而是返回一個(gè)map對(duì)象。

譯者注:map()函數(shù)在python2中返回的是列表。

你可能很好奇哪個(gè)詞實(shí)際上是abcderian的字母-讓我們編寫(xiě)這個(gè)問(wèn)題的答案:

for item in test_list:
    if is_abecedarian(item):
        print(f"The word '{item}' is abecedarian. :)")
    else:
        print(f"The word '{item}' is not abecedarian. (")

輸出:

The word 'effort' is abecedarian. :)
The word 'circle' is not abecedarian.
The word 'yearly' is not abecedarian.
The word 'woolen' is not abecedarian.
The word 'accept' is abecedarian. :)
The word 'lurker' is not abecedarian.
The word 'island' is not abecedarian.
The word 'faucet' is not abecedarian.
The word 'glossy' is abecedarian. :)
The word 'evader' is not abecedarian.

映射操作(map):一種遍歷一個(gè)序列并對(duì)每個(gè)元素執(zhí)行操作的處理模式。

映射(mapping):一個(gè)集合中的每個(gè)元素對(duì)應(yīng)另一個(gè)集合中的一個(gè)元素的關(guān)系

將map()轉(zhuǎn)換為列表,元組和集合

由于map()不返回列表/元組/集合,因此我們需要采取額外的步驟來(lái)轉(zhuǎn)換生成的map對(duì)象:

def capitalize_word(input_word):
    return input_word.capitalize()


map_object = map(capitalize_word, ['strength', 'agility', 'intelligence'])
test_list = list(map_object)
print(test_list)

map_object = map(capitalize_word, ['health', 'mana', 'gold'])
test_set = set(map_object)
print(test_set)

map_object = map(capitalize_word, ['armor', 'weapon', 'spell'])
test_tuple = tuple(map_object)
print(test_tuple)

輸出:

['Strength', 'Agility', 'Intelligence']
{'Mana', 'Health', 'Gold'}
('Armor', 'Weapon', 'Spell')

將map()與Lambda表達(dá)式結(jié)合

Lambda表達(dá)式是對(duì)我們的工具庫(kù)的一個(gè)很好的補(bǔ)充:將Lambda表達(dá)式與map()代碼相結(jié)合可使您的Python程序更小,更精確。

Lambda表達(dá)式可以創(chuàng)建匿名函數(shù),即未約定特定標(biāo)識(shí)符的函數(shù)。相反,通過(guò)def關(guān)鍵字創(chuàng)建函數(shù)會(huì)將函數(shù)綁定到其唯一標(biāo)識(shí)符(例如def my_function創(chuàng)建標(biāo)識(shí)符my_function)。

但是,lambda表達(dá)式也有一系列限制:它們每個(gè)只能做一件事情,只能在一個(gè)地方使用,通常與其他功能結(jié)合使用。我們看看lambda表達(dá)式如何map()同時(shí)使用:

cities = ["caracas", "bern", "oslo", "ottawa", "bangkok"]


def capitalize_word(input_word):
    return input_word.capitalize()


capitalized_cities = map(capitalize_word, cities)

更簡(jiǎn)潔的版本:

cities = ["caracas", "bern", "oslo", "ottawa", "bangkok"]

capitalized_cities = map(lambda s: s.capitalize(), cities)

需要注意:map()和lambda表達(dá)式提供了凝聚多行代碼成一行的能力。
盡管此功能非常出色,但我們需要牢記編程的黃金法則之一:代碼讀取比寫(xiě)入更頻繁。這意味著map()和lambda表達(dá)式都可以提高代碼的簡(jiǎn)潔性,但是卻犧牲了代碼的清晰度。遺憾的是,對(duì)于代碼的可讀性,實(shí)際上并沒(méi)有明確的指導(dǎo)方針- 隨著編程經(jīng)驗(yàn)的增長(zhǎng),大家將逐漸明白這一點(diǎn)。

使用map()遍歷字典

map()也非常適合遍歷字典

假設(shè)有一個(gè)包含蘋(píng)果,梨和櫻桃價(jià)格的字典,我們需要通過(guò)應(yīng)用15%的折扣來(lái)更新價(jià)格表。方法如下:

price_list = {
    "pear": 0.60,
    "cherries": 0.90,
    "apple": 0.35,
}


def calulates_discount(item_price):
    return (item_price[0], round(item_price[1] * 0.85, 2))


new_price_list = dict(map(calulates_discount, price_list.items()))

輸出:

{'pear': 0.51, 'cherries': 0.77, 'apple': 0.3}

將map()與Lambda表達(dá)式組合遍歷字典

當(dāng)開(kāi)始組合多個(gè)功能時(shí),編程特別有趣,一個(gè)很好的例子是map()配合使用和lambda表達(dá)式來(lái)遍歷字典。在下面的代碼中,我們初始化字典列表,并將每個(gè)字典作為參數(shù)傳遞給lambda函數(shù)。

list_of_ds = [{'user': 'Jane', 'posts': 18}, {'user': 'Amina', 'posts': 64}]

map(lambda x: x['user'], list_of_ds)  # Output: ['Jane', 'Amina']

map(lambda x: x['posts'] * 10, list_of_ds)  # Output: [180, 640]

map(lambda x: x['user'] == "Jane", list_of_ds)  # Output: [True, False]

map()替代方法:列表解析

像所有技術(shù)/產(chǎn)品/方法等等一樣,一些Python開(kāi)發(fā)人員認(rèn)為map()函數(shù)在某種程度上不是Python風(fēng)格(即未遵循應(yīng)如何構(gòu)建Python程序的精神和設(shè)計(jì)理念)。他們建議改用列表解析,比如:

map(f, iterable)

變成

[f(x) for x in iterable]

在速度和性能方面,map()與列表理析大致相等,因此不可能看到執(zhí)行時(shí)間顯著減少 - 經(jīng)驗(yàn)豐富的Python開(kāi)發(fā)者Wesley Chun在其演講Python 103:Memory Model&Best Practices中解決了這個(gè)問(wèn)題,有興趣的同學(xué)可移步:
https://conferences.oreilly.c...

By Denis Kryukov

https://blog.soshace.com/pyth...

本文由博客一文多發(fā)平臺(tái) OpenWrite 發(fā)布!

審核編輯 黃昊宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    67

    文章

    8562

    瀏覽量

    137208
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4884

    瀏覽量

    90295
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5604

    瀏覽量

    124610
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    數(shù)據(jù)可視化Python-matplotlib概述

    數(shù)據(jù)可視化(二):Python-matplotlib
    發(fā)表于 07-22 14:58

    如何把AD中非可視化區(qū)域物件移到可視化區(qū)域?

    AD中非可視化區(qū)域物件怎么移到可視化區(qū)域???
    發(fā)表于 09-10 05:36

    python數(shù)據(jù)可視化的方法和代碼

    Python數(shù)據(jù)可視化匯總
    發(fā)表于 10-14 14:59

    Python數(shù)據(jù)可視化專(zhuān)家的七個(gè)秘密

    分享 Python數(shù)據(jù)可視化專(zhuān)家的七個(gè)秘密
    發(fā)表于 05-15 06:43

    python數(shù)據(jù)可視化之畫(huà)折線圖

    python數(shù)據(jù)可視化之畫(huà)折線圖,散點(diǎn)圖
    發(fā)表于 05-27 08:09

    Python數(shù)據(jù)可視化

    Python數(shù)據(jù)可視化:網(wǎng)易云音樂(lè)歌單
    發(fā)表于 07-19 08:30

    函數(shù)可視化與Matlab作

    函數(shù)可視化與Matlab作2.1 實(shí)驗(yàn)與觀察:函數(shù)可視化2.1.1 Matlab二維繪圖命令1.周期函數(shù)與線性p-周期
    發(fā)表于 10-17 00:30 ?2614次閱讀
    <b class='flag-5'>函數(shù)</b>的<b class='flag-5'>可視化</b>與Matlab作

    可視化技術(shù)有哪些

    完整的地理空間信息可視化概念主要包括科學(xué)計(jì)算可視化、數(shù)據(jù)可視化和信息可視化可視化技術(shù)作為解釋
    發(fā)表于 02-05 09:09 ?4181次閱讀

    Python拉勾網(wǎng)數(shù)據(jù)采集與可視化

    本文是先采集拉勾網(wǎng)上面的數(shù)據(jù),采集的是Python崗位的數(shù)據(jù),然后用Python進(jìn)行可視化。主要涉及的是爬蟲(chóng)&數(shù)據(jù)可視化的知識(shí)。
    的頭像 發(fā)表于 03-13 14:18 ?3896次閱讀
    <b class='flag-5'>Python</b>拉勾網(wǎng)數(shù)據(jù)采集與<b class='flag-5'>可視化</b>

    使用Python可視化數(shù)據(jù),機(jī)器人開(kāi)發(fā)編程

    機(jī)器學(xué)習(xí)開(kāi)發(fā),與Mail.Ru Search數(shù)據(jù)分析負(fù)責(zé)人Egor Polusmak和Mail.Ru Group數(shù)據(jù)科學(xué)家Yury Kashnitsky一起探索如何使用Python可視化數(shù)據(jù)。在機(jī)器學(xué)習(xí)領(lǐng)域中,可視化并不僅僅用來(lái)
    的頭像 發(fā)表于 03-15 16:56 ?1w次閱讀

    Python數(shù)據(jù)可視化編程實(shí)戰(zhàn)

    Python數(shù)據(jù)可視化編程實(shí)戰(zhàn)資料免費(fèi)下載。
    發(fā)表于 06-01 14:37 ?29次下載

    怎樣使用Python去進(jìn)行可視化繪制?

    今天給大家?guī)?lái)繪制“手繪風(fēng)格”可視化作品的小技巧,主要涉及Python編碼繪制,內(nèi)容如下。
    的頭像 發(fā)表于 06-23 11:49 ?2920次閱讀
    怎樣使用<b class='flag-5'>Python</b>去進(jìn)行<b class='flag-5'>可視化</b>繪制?

    使用arduino和python可視化你的比特幣收益和損失

    電子發(fā)燒友網(wǎng)站提供《使用arduino和python可視化你的比特幣收益和損失.zip》資料免費(fèi)下載
    發(fā)表于 12-21 16:50 ?0次下載
    使用arduino和<b class='flag-5'>python</b><b class='flag-5'>可視化</b>你的比特幣收益和損失

    使用Python來(lái)收集、處理和可視化人口數(shù)據(jù)

    如何使用Python這一流行的編程語(yǔ)言來(lái)收集、處理和可視化印度和中國(guó)的人口數(shù)據(jù)呢?本文將向你介紹一些基本的步驟和技巧,幫助你掌握Python進(jìn)行可視化分析的方法。我們將使用以下幾個(gè)庫(kù)來(lái)
    的頭像 發(fā)表于 06-21 17:08 ?2647次閱讀
    使用<b class='flag-5'>Python</b>來(lái)收集、處理和<b class='flag-5'>可視化</b>人口數(shù)據(jù)

    Python 可視化如何配色

    我們?cè)诶?b class='flag-5'>Python進(jìn)行數(shù)據(jù)可視化時(shí),有著大量的高質(zhì)量庫(kù)可以用,比如: Matplotlib 、 seaborn 、 Plotly 、 Bokeh 、 ggplot 等等。但圖表好不好看,配色占
    的頭像 發(fā)表于 10-30 15:43 ?1317次閱讀
    <b class='flag-5'>Python</b> <b class='flag-5'>可視化</b>如何配色
    五家渠市| 澳门| 寿阳县| 固安县| 余干县| 湛江市| 武宣县| 尼玛县| 商南县| 玛曲县| 阿勒泰市| 南充市| 日喀则市| 库尔勒市| 鄯善县| 新宾| 乌兰县| 横山县| 都匀市| 佛冈县| 达孜县| 璧山县| 宜丰县| 建昌县| 台北市| 泾川县| 石嘴山市| 嘉荫县| 介休市| 桃江县| 三明市| 巨鹿县| 平武县| 彩票| 茂名市| 黔东| 新干县| 荃湾区| 江山市| 陕西省| 双江|