#### Pythonの学習(F)####

高次機能は##### #####
高階関数は、入力または関数の出力として受け付ける機能を指し、そのような組み込みマップとして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]
  1. 各要素の階乗の場合
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)]

おすすめ

転載: blog.csdn.net/weixin_44821839/article/details/90734458