#python map函數的用法
#map()函數語法
#map(function,iterable,。。。)接收兩個參數,第一個參數是函數,第二個參數是可迭代對象
def square(x):
return x**2
r = map(square,[1,2,3,4,5])
print(r)#返回的是一個可迭代對象
print(list(r))
# map和lambda結合使用
r = map(lambda x:x**2,[1,2,3,4,5])
print(list(r))
b = map(lambda x,y:x**2+y,[1,2,3,4,5,6],[1,2,3,4,5])
print(list(b))
map可以接受多個可迭代對象,計算的時候以最短的爲準
# s = map(lambda x,y:x*y,range(5),range(6))
# print(list(s))#結果是一個內存地址把他轉化成列表顯示
#
# #filter(function,iterable) 第一個參數接收函數,第二個參數可迭代對象
# #功能,返回函數執行結果爲true的結果,過濾調爲false的結果
# a = filter(lambda x:x%2,range(9))
# print(list(a))
#
# #python3中,reduce()函數從全局空間力移除了,被放在functools模塊中,
# #引用functools模塊來調用reduce()函數
#
# from functools import reduce
# # reduce(function,iterable)第一個參數接收函數,第二個參數可迭代對象
# # 返回連續計算的結果
# c = reduce(lambda x,y:x*y,range(1,5))
# print(c)
#
# d = reduce(lambda x,y:x-y,[1,2,3,4],5)
# print(d)
#
# f = reduce(lambda x,y:x+y,["a","b","c","d"],"f")
# print(f)
# #通過f的計算結果可以得到先吧最後的值拿來傳給x
#
# # sort,sorted函數
# e = [1,57,11,4,22,77,4,11,75]
# e.sort()#正序
# print(e)
# e.sort(reverse=True)#倒序
# print(e)
# g = ["s","d","h","p","a"]
# g1 = sorted(g)
# print(g1)
# g.sort()
# print(g)
#
# a = ["s","d","h","p","a"]
# b = a.sort()#注意sort方法會對原來的對象進行操作,沒有返回值,所以此時b的值爲None
# print(b)
c = {"a":18,"b":17,"c":19,"d":20}
b = []
for k,v in c.items():
d = (k,v)
b.append(d)
print(b)
cc = sorted(b,key=lambda x:x[1])
print(cc)