日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python条件语句函数_python sum 函数中可以使用条件语句吗

發(fā)布時間:2023/12/18 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python条件语句函数_python sum 函数中可以使用条件语句吗 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這邊的 for 或是 if 都跟 sum 本身沒有什麼關(guān)係,如同 @大鵪鶉 所說,sum 接受一個可迭代的對象作為參數(shù),至於這個例子中的可迭代對象就一個 使用 list comprehension 產(chǎn)生的 list。

那就稍為介紹一下 list comprehension(串列產(chǎn)生式) 好了。

這是一個帶有 functional programming 味道的語法,直覺而優(yōu)雅。

顧名思義,他是為了產(chǎn)生 串列 而被使用。

因此有一個重要的原則就是:

當(dāng)今天代碼的目的是為了要生成一個 list ,那我們應(yīng)當(dāng)考慮使用他,否則完全不應(yīng)該使用

我們來看一下用法,非常簡單的,為了生成串列,所以我們字面上使用兩個成對的中括號 [] ( list 的字面產(chǎn)生語法),夾住一個 for...in... 迭代式,利用 for 走訪到的元素會被依序用來製造 list 中的各個元素。

讓我們看例子,假設(shè)今天我們有一個整數(shù)的串列 lst,我們想要製造另外一個串列 lst2,其中的每個元素都是 lst 中元素的平方:

lst = [1, 2, 3, 4]

lst2 = []

for i in lst:

lst2.append(i**2)

我們使用了一個標(biāo)準(zhǔn)的 for...in... 迴圈來作到這件事,但同樣的事情,我們能夠用 list comprehension 作得更簡潔更優(yōu)雅:

lst = [1, 2, 3, 4]

lst2 = [i**2 for i in lst]

在這個例子中,for i in lst 會依序取出 lst 中的元素進(jìn)行平方運算後成為 lst2 的新元素。 這讓人聯(lián)想到 map function,我們同樣可以使用 映射 來作到類似的效果:

lst = [1, 2, 3, 4]

lst2 = map(lambda x:x**2, lst) # Python2

lst2 = list(map(lambda x:x**2, lst)) # Python3

map 會依序走訪他第二個參數(shù)(一個可迭代對象)中的元素,並且將元素作為引數(shù),調(diào)用他的第一個參數(shù)(一個單參數(shù)函數(shù)),也就是會依序取出 1, 2, 3 ,4 然後將之當(dāng)成參數(shù) x 調(diào)用匿名函數(shù) lambda x:x**2。

但我們可以發(fā)現(xiàn) list comprehension 更加直覺,我們可以說 list comprehension 中的 for述句就是在 map 的良好替代品。

說到 map 就會想到 filter,他會對可迭代物件進(jìn)行過濾的動作。

比如說我想讓 lst2 裡面只出現(xiàn)奇數(shù):

lst = [1, 2, 3, 4]

lst2 = filter(lambda x:x%2!=0, map(lambda x:x**2, lst)) # Python2

lst2 = list(filter(lambda x:x%2!=0, map(lambda x:x**2, lst))) # Python3

filter 一樣會去走訪他的第二個參數(shù)(一個可迭代對象),並依序取出當(dāng)成引數(shù),調(diào)用他的第一個參數(shù)(一個單參數(shù)函數(shù)),若運算的結(jié)果為真( True ),則保留此回傳值作為新的元素,反之( False )會被過濾掉。

而現(xiàn)在 filter 也有了替代品,就是 list comprehension,我們可以這樣寫:

lst = [1, 2, 3, 4]

lst2 = [i**2 for i in lst if i%2!=0]

同樣也是簡單許多! 我們可以說 list comprehension 中的 if 述句就是 filter 的良好替代品。

看到這裡,相信你已經(jīng)明白:

sum([pow(prefs[person1][item]-prefs[person2][item],2)

for item in prefs[person1] if item in prefs[person2]])

這段代碼,是先執(zhí)行了一個含有 for...in... 述句和 if 述句的 list comprehension 來產(chǎn)生 list 後,才以該 list 作為引數(shù)調(diào)用 sum 函數(shù)。

結(jié)論:

for...in... 和 if 與 sum 沒有直接關(guān)係。

for...in... 和 if 是 list comprehension 的關(guān)鍵語法。

list comprehension 可以幫助我們使用可迭代對象產(chǎn)生 list。

list comprehension 是 map 和 filter 的良好替代品。

總結(jié)

以上是生活随笔為你收集整理的python条件语句函数_python sum 函数中可以使用条件语句吗的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。