运用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)
有点不清楚题意,能作些补充吗?
# -*- 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
"""