亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

偏函數怎么在Python中使用

發布時間:2021-01-04 14:57:16 來源:億速云 閱讀:152 作者:Leah 欄目:開發技術

這篇文章給大家介紹偏函數怎么在Python中使用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

python中偏函數

當一個函數有很多參數時,調用者就需要提供多個參數。如果減少參數個數,就可以簡化調用者的負擔。

比如,int()函數可以把字符串轉換為整數,當僅傳入字符串時,int()函數默認按十進制轉換:

>>> int('12345')
12345

int()函數還提供額外的base參數,默認值為10。如果傳入base參數,就可以做 N 進制的轉換:

>>> int('12345', base=8)
5349
>>> int('12345', 16)
74565

假設要轉換大量的二進制字符串,每次都傳入int(x, base=2)非常麻煩,于是,我們想到,可以定義一個int2()的函數,默認把base=2傳進去:

def int2(x, base=2):
  return int(x, base)

這樣,我們轉換二進制就非常方便了:

>>> int2('1000000')
64
>>> int2('1010101')
85

functools.partial就是幫助我們創建一個偏函數的,不需要我們自己定義int2(),可以直接使用下面的代碼創建一個新的函數int2:

>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2('1000000')
64
>>> int2('1010101')
85

所以,functools.partial可以把一個參數多的函數變成一個參數少的新函數,少的參數需要在創建時指定默認值,這樣,新函數調用的難度就降低了。

任務

在第7節中,我們在sorted這個高階函數中傳入自定義排序函數就可以實現忽略大小寫排序。請用functools.partial把這個復雜調用變成一個簡單的函數:

sorted_ignore_case(iterable)

要固定sorted()的cmp參數,需要傳入一個排序函數作為cmp的默認值。

參考代碼:

#!/usr/bin/python
#coding: utf-8
import functools
# cmp = lambda s1, s2: cmp(s1.upper(), s2.upper()) 最左邊一定要有cmp = , 這樣執行print的時候會執行
# 匿名函數中的cmp函數,關于為什么使用cmp = ,請看上面的例子中,base = 2, 如果說沒有base = 的話,結果
# 肯定會出錯
# cmp函數釋義:
# cmp(x,y) 函數用于比較2個對象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
# 用于排序中,默認從小到大
sorted_ignore_case = functools.partial(sorted, cmp = lambda s1, s2: cmp(s1.upper(), s2.upper()))
print(sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit']))
# 不使用偏函數的時候
'''
def cmp_ignore_case(s1, s2):
  u1 = s1.upper()
  u2 = s2.upper()
  if u1 > u2:
    return 1
  if u1 < u2:
    return -1
  return 0
print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
'''

運行結果:

['about', 'bob', 'Credit', 'Zoo']

關于偏函數怎么在Python中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

航空| 澜沧| 墨江| 新郑市| 金寨县| 西贡区| 洮南市| 越西县| 新沂市| 井冈山市| 治县。| 咸宁市| 黄梅县| 交口县| 容城县| 光山县| 神池县| 舞阳县| 米林县| 宜春市| 金沙县| 阜南县| 井冈山市| 北流市| 常宁市| 离岛区| 鹿泉市| 繁峙县| 喀喇沁旗| 池州市| 台东市| 平安县| 元谋县| 兴义市| 灌云县| 丰原市| 舞钢市| 甘谷县| 即墨市| 晋宁县| 五常市|