基于Python中求和函數(shù)sum的用法詳解
基于Python中求和函數(shù)sum的用法詳解
今天在看《集體編程智慧》這本書的時(shí)候,看到一段Python代碼,當(dāng)時(shí)是百思不得其解,總覺(jué)得是書中排版出錯(cuò)了,后來(lái)去了解了一下sum的用法,看了一些Python大神寫的代碼后才發(fā)現(xiàn)是自己淺薄了!特在此記錄一下。書中代碼段摘錄如下:
from math import sqrt
def sim_distance(prefs, person1, person2):
# 得到shared_items的列表
si = {}
for item in prefs[person1]:
if item in prefs[person2]:
si[item] = 1
# 如果兩者沒(méi)有共同之處,則返回0
if len(si) == 0: return 0
# 計(jì)算所有差值的平方和
sum_of_squares = sum([pow(prefs[person1][item] - prefs[person2][item], 2)
for item in prefs[person1] if item in prefs[person2]])
return 1/(1 + sqrt(sum_of_squares))
自己不明白的代碼塊就是在計(jì)算所有差值的平方和這里,按照一般語(yǔ)言邏輯,應(yīng)該是for語(yǔ)句和pow語(yǔ)句位置對(duì)調(diào)一下啊,很是困惑!后來(lái)查閱了一下sum函數(shù)的用法才豁然開朗,再次感嘆Python之神(bian)奇(tai)語(yǔ)法。
sum函數(shù)的參數(shù)是這樣的:sum(iterable[, start]),其中iterable為可迭代對(duì)象,可以是list、tuple或者dictionary等。
sum函數(shù)最后的值 = 可迭代對(duì)象里面的數(shù)相加的值 + start的值,其中start可以不寫,默認(rèn)為0。講到這里,那么我們?cè)趺慈ダ斫馍厦嬗?jì)算所有差值的平方和這段代碼呢?其實(shí)很簡(jiǎn)單,看看下面這段代碼,然后再回去看上面那段代碼就會(huì)柳暗花明了!
from math import sqrt a = range(1, 11) b = range(1, 10) c = sum([item for item in a if item in b]) print c
可以自己輸入這段簡(jiǎn)單的代碼運(yùn)行試試,最終的結(jié)果是:45
補(bǔ)充一點(diǎn):"item for item in a if item in b" 這種表達(dá)式叫作列表推導(dǎo)式,是在一組字符串或者一組對(duì)象上執(zhí)行一條相同操作的簡(jiǎn)潔寫法!
以上這篇基于Python中求和函數(shù)sum的用法詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用Pandas生成日?qǐng)?bào)的實(shí)現(xiàn)代碼
Pandas是Python中一個(gè)強(qiáng)大的數(shù)據(jù)處理庫(kù),它提供了許多功能強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,在本文中,我們將介紹Pandas的基本概念和如何使用它生成一個(gè)包含今天到未來(lái)20個(gè)工作日的日期列表的Excel文件,需要的朋友可以參考下2023-11-11
caffe binaryproto 與 npy相互轉(zhuǎn)換的實(shí)例講解
今天小編就為大家分享一篇caffe binaryproto 與 npy相互轉(zhuǎn)換的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
python設(shè)計(jì)微型小說(shuō)網(wǎng)站(基于Django+Bootstrap框架)
這篇文章主要介紹了python設(shè)計(jì)微型小說(shuō)網(wǎng)站(基于Django+Bootstrap框架),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
python3使用requests模塊爬取頁(yè)面內(nèi)容的實(shí)戰(zhàn)演練
本篇文章主要介紹了python3使用requests模塊爬取頁(yè)面內(nèi)容的實(shí)戰(zhàn)演練,具有一定的參考價(jià)值,有興趣的可以了解一下2017-09-09
Pandas 對(duì)Dataframe結(jié)構(gòu)排序的實(shí)現(xiàn)方法
下面小編就為大家分享一篇Pandas 對(duì)Dataframe結(jié)構(gòu)排序的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python 標(biāo)準(zhǔn)庫(kù)zipfile將文件夾加入壓縮包的操作方法
Python zipfile 庫(kù)可用于壓縮/解壓 zip 文件. 本文介紹一下如何創(chuàng)建壓縮包,對(duì)Python zipfile壓縮包相關(guān)知識(shí)感興趣的朋友一起看看吧2021-09-09
python 實(shí)現(xiàn)返回一個(gè)列表中出現(xiàn)次數(shù)最多的元素方法
今天小編就為大家分享一篇python 實(shí)現(xiàn)返回一個(gè)列表中出現(xiàn)次數(shù)最多的元素方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
Python趣味實(shí)例,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的抽獎(jiǎng)刮刮卡
這篇文章主要介紹了Python如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的抽獎(jiǎng)刮刮卡,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07

