高次機能は##### #####
高階関数は、入力または関数の出力として受け付ける機能を指し、そのような組み込みマップとしてPython高次関数、()関数は、()関数を減少させる、フィルタ()関数そしてソート()は、高次関数を機能
-引数が関数名
の関数関数の戻り値である-
自体は変数は関数を指すことができ、変数に割り当てることができる機能
f = abs ##abs 取绝对值
print(f(-10))
def numbers(x,y,f): #定义一个函数
return f(x),f(y)
N = numbers #函数赋值给变量
print(N(-5,-10,abs)) ##通过变量调用函数
### ##マップ()関数は
、二つの引数を受信し、関数が配列され、渡された関数をマップするパラメータを必要とし、返り値:マップ()
マップ着信順次関数に適用配列の各要素、及び結果を新たな配列として返され、最終的な戻り値は、マップオブジェクトが、直接すべてのオブジェクトを印刷することができない、またはリストを転送するために次のループ()を使用することもできるトラバースリスト()関数のために使用することができます
出力列数の1全ての絶対値
list1 = [-5,-8,-10,-4]
list2 = map(abs,list1) ##用abs 函数依次作用于list1中的每个元素,将处理后的结果返回序列
print(list(list2))
运行结果:
[5, 8, 10, 4]
- 各要素の階乗の場合
def factoria(n):
res = 1 ##从1开始
for i in range(1,n+1):
res = res * i ##求阶乘的公式,
return res #输入一个参数返回阶乘值
li = [random.randint(1,9) for i in range(10)]
print(list(map(factoria,li)))
前記入力文字列の変換は、大文字にします
str = 'hello python' #定义一个字符串
#定义一个将字符串转换成大写字母的函数
def change_upper(s):
return s.upper() #将字母转换成大写字母
str1 = map(change_upper,str) #将map返回的值放在str1
print(''.join(list(str1)),type(str1)) #用空连接返回值
运行结果:
HELLO PYTHON <class 'map'> #类型改变成map类型
##()関数##減らす
減らす()配列に作用する機能を、この機能は2つのパラメータを受信しなければならないことは、治療後の値を返し
、結果を減少させ、シーケンスの次の要素がこのようにアキュムレータ(関数として計算されるし続けます一連の処理の最初の2つの要素、最後に戻り値になるまで、プロセスで処理した後、次いで第三の要素を値を返す)
低減(F、[X1、X2、X3、X4])= F(F(F (X1、X2)、X3)、X4)
にpython2:組み込み関数を低減である
functoolsランキング使用減らすインポートから導入されるのpython3
10に必要な製品または1及び
from functools import reduce
#import functools
#functools.reduce()
#定义函数
def multi(x,y):
return x*y ##返回值是两个数的乘积
print(reduce(multi,range(1,11)))
求和:
def add(x,y):
return x+y##返回值是两个数的和
print(reduce(add,range(1,11)))
运行
3628800
55
1.文字列を整数に変換します
from functools import reduce
def str2int(s):
def char2int(ch):
c = {str(x): x for x in range(10)}
return c[ch]
def fun(n1, n2):
return n1 * 10 + n2
return reduce(fun, map(char2int, s))
num = str2int('26578')
print(type(num), num)
###フィルタ()関数フィルタ##
及び地図()は類似しており、また、配列の機能を受信し
ますが、マップ()異なって、フィルタ()関数に適用順次渡される
各要素を、その後に応じて戻り値は、要素の保持または廃棄するTrueまたはFalseの決定である
にも1 100に必要なの
def isodd(num):
if num % 2 == 0:
return True
else:
return False
print(list(filter(isodd,range(100))))
### ###無名関数
キーワード匿名関数は、コロンの前に、ラムダあるパラメータであり、コロンが後の戻り値
ラムダ関数は、パラメータを渡すことはできませんが、また、演算結果を返すために、ないラムダ関数名、通常は1行の式
from functools import reduce
# def add(x,y):
# return x+y
# print(reduce(add,range(10)))
print(reduce(lambda x,y:x+y,range(10)))
# def mypow(x):
# return x**2
print(list(map(lambda x:x**2,range(5))))
# def isood(num):
# return num%2 ==0
print(list(filter(lambda x:x%2==0,range(100))))
1.マップ()関数の使用は、非標準の英語名のユーザ入力は、他の仕様小文字の名前、最初の文字が大文字になり
def right_name(n):
def upper1lower(w):
return w.lower()
return n[0].upper()+''.join(map(upper1lower,n[1:]))
print(right_name('westos'))
##ソート()関数##
ソート()関数はイテラブルをソートするために使用され、リスト()関数は、元の位置をソートした、異なる要素のソート順序が変更され、そしてソートされソートした後、新たなリストを生成
list = [1,4,7,2,9,5]
list.sort()
print(list)
list1 = [4,7,5,9,3,1]
a = sorted(list1)
print(list1)
print(a)
运行:
[1, 2, 4, 5, 7, 9] #在原列表上排序
[4, 7, 5, 9, 3, 1] #不改变
[1, 3, 4, 5, 7, 9] #生成新的列表
指定された配列与えられた条件に応じてソート機能をソート
ソート(シリアル、キー=条件)
list = [-4,6,7,-1,3,-6]
list.sort()
print(list)
list1 = sorted(list,key=abs) #按照绝对值得大小排列,并且不会改变原序列的内容
print(list1)
运行:
[-6, -4, -1, 3, 6, 7] #默认的排序
[-1, 3, -4, -6, 6, 7]
student = [
# 学生 身高 体重
('Tony',170,60),
('Lily', 163, 52),
('Tom', 190, 63),
('Jeck', 158, 62),
('Alice', 170 ,60)
]
#按照身高排序
def sorted_by_high(x):
return x[1]
# 按照体重进行排序
def sorted_by_weight(x):
return x[2]
# 先按照身高进行小-大的排序,如果身高一样
# 则按照体重由小-大进行排序
def sorted_by_high_weight(x):
return x[1],x[2]
print(sorted(student,key=sorted_by_high))
print(sorted(student,key=sorted_by_weight))
print(sorted(student,key=sorted_by_high_weight))
运行:
[('Jeck', 158, 62), ('Lily', 163, 52), ('Tony', 170, 60), ('Alice', 170, 60), ('Tom', 190, 63)]
[('Lily', 163, 52), ('Tony', 170, 60), ('Alice', 170, 60), ('Jeck', 158, 62), ('Tom', 190, 63)]
[('Jeck', 158, 62), ('Lily', 163, 52), ('Tony', 170, 60), ('Alice', 170, 60), ('Tom', 190, 63)]