#coding=utf-8from
functools import reduce
alist = [1, 3, 5, 7, 9]#
1.map
def mi(x):
return x**2
"map mi結果:
",list(map(mi,alist))
# 1.2
map把元素為int的轉化為字串
"元素型別為int的轉為字串:
",list(map(str,alist))# 2
.reduce
# 2.1 把序列[1, 3, 5, 7, 9
]變換成整數13579
def test_reduce(x,y):
return x*10+y
a =reduce(test_reduce,alist)
"reduce結果為:",a
# 練習
'''1
.利用map()函式,把使用者輸入的不規範的英文名字,變為首字母大寫,
其他小寫的規範名字。輸入:[
'adam
', '
lisa
', '
bart
'],輸出:['
adam
', '
lisa
', '
bart']:
'''name = ['
adam
', '
lisa
', '
bart']
"使用者輸入的不規範的英文名字,變為首字母大寫:
",list(map(str.capitalize,name))# 2
.python提供的sum()函式可以接受乙個list並求和,請編寫乙個prod()函式,可以接受乙個list並利用reduce()求積:
def prod(x,y):
return x*y
"接受乙個list並利用reduce()求積:
",reduce(prod,alist)
# 3.利用map和reduce編寫乙個str2float函式,把字串'
123.456
'轉換成浮點數123.456
def str2float(s):
dot = 0
num = 0if"
."ins:
for i,x in
enumerate(s):
if x == "."
: dot = len(s) - i - 1
s = s.replace('
.',''
)
break
else
: s =s
print("s=
",s)
def fn(x,y):
return x * 10 +y
def char2num(s):
return [s]
return reduce(fn,map(char2num,s)) / (10**dot)
a = str2float("
123.456")
print(
"練習3的結果:
",a) # == > 練習3的結果: 123.456# 3
.filter:用於過濾序列和map()類似,filter()也接收乙個函式和乙個序列。和map()不同的是,filter()把傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素。
def is_odd(x):
return x%2 == 1
"奇數有:
",list(filter(is_odd,[1, 2, 4, 5, 6, 9, 10, 15
]))#
3.1把乙個序列中的空字串刪掉,可以這麼寫:
def not_empty(s):
return
s and s.strip()
"去掉空字串後:
",list(filter(not_empty,['
a', '', '
b', none, '
c', '
']))
# 練習回數是指從左向右讀和從右向左讀都是一樣的數,例如12321,
909。請利用filter()濾掉非回數:
def is_pal(x):
if str(x)==str(x)[::-1
]:
return
xprint
"回數有:
",list(filter(is_pal,[x for x in range(1,1000
)]))
"回數有:
",[x for x in range(1,1000) if str(x)==str(x)[::-1
]]#
4.sorted 排序演算法
s_l = [1,3,6,-20,34
]s_l_1 = ["
abc","
abc","
d","d"
"公升序排列:
",sorted(s_l)
# 4.1
sorted()函式也是乙個高階函式,它還可以接收乙個key函式來實現自定義的排序
"自定義排序:
",sorted(s_l,key=abs)
"自定義反向排序:
",sorted(s_l,key=abs,reverse=true)
# 4.2
字串排序依照ascii
"字串排序:
",sorted(s_l_1)
# 4.3
忽略大小寫排序
"忽略字串大小寫排序:
",sorted(s_l_1,key=str.lower)
# 4.4 要進行反向排序,不必改動key函式,可以傳入第三個引數reverse=true:
"忽略字串大小寫反向排序:
",sorted(s_l_1,key=str.lower,reverse=true)
# 練習假設我們用一組tuple表示學生名字和成績:l = [('
bob', 75), ('
adam
', 92), ('
bart
', 66), ('
lisa
', 88
)] 請用sorted()對上述列表分別按名字排序:
l = [('
bob', 75),('
adam
', 90), ('
adam
', 92), ('
bart
', 66), ('
lisa
', 88),('
bart
', 100), ('
bart
', 88
"名字列表為:",l
def top(t):
return t[0
"按照名字排序(預設公升序,名字相同的情況下誰的名字在前誰排在前方):
",sorted(l,key=top)
# 擴充套件1:如果名字相同,按照分數排序(預設公升序)
def by_name_score(t):
return (t[0],t[1
"名字相同,按照分數公升序排序:
",sorted(l,key=by_name_score)
#待補充
"名字相同,按照分數降序排列(答案待補充):
",sorted(l,key=by_name_score,reverse=true)
from
operator import itemgetter,attrgetter
python重寫內建函式 python 內建函式
說明 zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。語法 zip iterable1,iterable2,引數 iterable 乙個或多...
python內建函式簡稱 Python內建函式詳解
此文參考python文件,然後結合自己的理解,寫下來,一方面方便自己,讓自己好好學習,順便回憶回憶 另一方面,讓喜歡的盆友也參考一下。經查詢,3.6版本總共有68個內建函式,主要分類如下 數 算 7個 型別轉換 24個 序列操作 8個 物件操作 9個 反射操作 8個 變數操作 2個 互動操作 2個 ...
python內建函式使用 python內建函式使用
eval函式執行python表示式,有返回值 eval 1 2 3 4 5 exec函式執行的是python語句,沒有返回值 exec print 123 將字串型別的 編碼.物件能夠通過exec語句來執行或者eval 進行求值,c只是編譯,不執行 code for i in range 10 pr...