关于#python#的问题:运用python的函数式编程,并且要求应用到lambda表达式和使用map()函数,写一个程序

运用python的函数式编程,并且要求应用到lambda表达式和使用map()函数,写一个程序,核心代码不少于三十行。

实体类

class Person:
    name = ''
    age = 0
    Date = ''
    id = ''

    def say_some(self):
        return f'我是克隆体:{self.name} 号,出生于 {self.Date}'

方法

# 获取 一个集合数据
from datetime import datetime



def get_Person_List(name):
    arr = []
    for x in range(0, 50):  # 循环50 次
        ser = '_{:0>3d}'.format(x + 1)  # 格式化3位数序号,位数不够0 补位
        per = Person()
        per.id = x + 1
        per.name = name + ser
        per.age = 13
        per.Date = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")   # 格式化时间
        per.say_some()
        arr.append(per)
    return arr


def print_str(x):
    print(x.name)
    print(x.age)
    print(x.say_some())


# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    lst = get_Person_List('张三')
    list(map(lambda x: print_str(x), lst))  #  使用lambda 匿名函数,map() 返回迭代器,list()转换为列表
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import numpy as np

#因为lambda是匿名函数,map和lambda结合起来使用,代码更加简洁
list_x = [1, 2, 3, 4, 5, 6, 7, 8]
r = map(lambda x:x*x,list_x)
print("平方计算:")
print(list(r))

list_y = [1, 2, 3, 4, 5, 6, 7, 8]
d = map(lambda x,y:x*x+y,list_x,list_y)
print("同长度计算:")
print(list(d))

list_z = [1, 2, 3]
m = map(lambda x,y:x*x+y,list_x,list_z)
print("不同长度计算:")
print(list(m))


list_w = [1, 2, 3, 4]
n = map(lambda x,y:x*x+y,list_w,list_x)
print("不同长度计算:")
print(list(n))


#使用map进行类型转换
l=map(int,'1234')
for i in l:
    print(type(i))
    print(i)

img

有点不清楚题意,能作些补充吗?

# -*- coding:utf-8 -*-

def fun1(lst):
    # 列表中所有元素都开平方
    return list(map(lambda x:x**2,lst))

lst = [1,2,3,4]

print(fun1(lst)) # [1,4,9,16]


def fun2(a,b,c):
    # 判断三角形是否为直角三角形
    t = a,b,c
    return sum(map(lambda x:x**2,t)) == max(t)**2*2

a,b,c = 3,4,5

if fun2(a,b,c):
    print('直角三角形!')
else:
    print('非直角三角形!')


def fun3(a, b):
    res = map(lambda x:x[0]+x[1],zip(a,b))
    return list(res)

a = [1,2,3]
b = [2,2,2]

print(fun3(a,b)) #[3, 4, 5]


↓↓↓如有帮助请点个采纳,谢谢!

核心代码不少于三十行什么意思?

拿去


#函数应用和映射
import numpy as np
import pandas as pd
# 创建一个四行三列的df数组,其中columns对应的是列的index,index对应的是行的索引
df=pd.DataFrame(np.random.randn(4,3),columns=list('bde'),index=['utah','ohio','texas','oregon'])
print(df)

"""
               b         d         e
utah   -0.667969  1.974801  0.738890
ohio   -0.896774 -0.790914  0.474183
texas   0.043476  0.890176 -0.662676
oregon  0.701109 -2.238288 -0.154442
"""
 
#将函数应用到由各列或行形成的一维数组上。DataFrame的apply方法可以实现此功能
f=lambda x:x.max()-x.min()
#默认情况下会以列为单位,分别对列应用函数
t1=df.apply(f)
print(t1)
#当axis=1是对行进行操作
t2=df.apply(f,axis=1)
print(t2)
 
"""
b    1.597883
d    4.213089
e    1.401566
dtype: float64

utah      2.642770
ohio      1.370957
texas     1.552852
oregon    2.939397
dtype: float64
"""
 
#除标量外,传递给apply的函数还可以返回由多个值组成的Series
def f(x):
    return pd.Series([x.min(),x.max()],index=['min','max'])
t3=df.apply(f)
#从运行的结果可以看出,按列调用的顺序,调用函数运行的结果在右边依次追加
print(t3)
 
"""
            b         d         e
min -0.896774 -2.238288 -0.662676
max  0.701109  1.974801  0.738890
"""
 
#元素级的python函数,将函数应用到每一个元素
#将DataFrame中的各个浮点值保留两位小数
f=lambda x: '%.2f'%x
t3=df.applymap(f)
print(t3)
"""
            b      d      e
utah    -0.67   1.97   0.74
ohio    -0.90  -0.79   0.47
texas    0.04   0.89  -0.66
oregon   0.70  -2.24  -0.15
"""
 
#注意,之所以这里用map,是因为Series有一个元素级函数的map方法。而dataframe只有applymap。
t4=df['e'].map(f)
print(t4)
 
"""
utah     0.74
ohio     0.47
texas   -0.66
oregon  -0.15
"""