day13函数进阶作业
-
写一个匿名函数,判断指定的年是否是闰年 (先直接用普通函数)
year1=lambda n: (n%4==0 and n%100!=0 or n%400==0 ) print(year1(2020)) -
写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)
list1=[1, 2, 3] # list2=map(lambda x:[ x for x in list1[-1::-1]],list1) # print(list(list2)[0]) # list2=map(lambda x:list1[len(list1)-1-list1.index(x)],list1) # print(list(list2)) list2=list(map(lambda x:list1[len(list1)-1-x],range(len(list1)))) print(list2)[4, 3, 2, 1] -
编写一个函数,计算一个整数的各位数的平方和
例如: sum1(12) -> 5(1的平方加上2的平方) sum1(123) -> 14nums=123
result= map(lambda x:int(x)**2,str(nums))
print(sum(result))14
- 求列表 nums 中绝对值最小的元素
例如:nums = [-23, 100, 89, -56, -234, 123], 最大值是:-23
nums = [-23, 100, 89, -56, -234, 123]
result=min(nums,key=abs)
print(result)-23
-
已经两个列表A和B,用map函数创建一个字典,A中的元素是key,B中的元素是value
A = ['name', 'age', 'sex'] B = ['张三', 18, '女'] 新字典: {'name': '张三', 'age': 18, 'sex': '女'}A = ['name', 'age', 'sex'] B = ['张三', 18, '女'] result=list(map(lambda x,y:{x:y},A,B)) print(result)[{'name': '张三'}, {'age': 18}, {'sex': '女'}] -
已经三个列表分别表示5个学生的姓名、学科和班号,使用map将这个三个列表拼成一个表示每个学生班级信息的的字典
names = ['小明', '小花', '小红', '老王'] nums = ['1906', '1807', '2001', '2004'] subjects = ['python', 'h5', 'java', 'python'] 结果:{'小明': 'python1906', '小花': 'h51807', '小红': 'java2001', '老王': 'python2004'}names = ['小明', '小花', '小红', '老王'] nums = ['1906', '1807', '2001', '2004'] subjects = ['python', 'h5', 'java', 'python'] result=map(lambda x,y, z: {x:z+y},names,nums,subjects) print(list(result))[{'小明': 'python1906'}, {'小花': 'h51807'}, {'小红': 'java2001'}, {'老王': 'python2004'}] -
已经一个列表message, 使用reduce计算列表中所有数字的和
message = ['你好', 20, '30', 5, 6.89, 'hello'] 结果:31.89sum1=reduce(lambda x,y:x+y,list(map(lambda i:i if type(i)==int or type(i)==float else 0,message)),0) print(sum1)sum1=reduce(lambda x,y:x+(y if type(y)==int or type(y)==float else 0) ,message,0) print(sum1) -
已经列表points中保存的是每个点的坐标(坐标是用元组表示的,第一个值是x坐标,第二个值是y坐标)
points = [(10, 20), (0, 100), (20, 30), (-10, 20), (30, -100) ]1)获取列表中y坐标最大的点
result=max(points,key=lambda x:x[1]) print(result)(0, 100)2)获取列表中x坐标最小的点
result=min(points,key=lambda x:x[0]) print(result)(-10, 20)3)获取列表中距离原点最远的点
result=max(points,key=lambda x:x[1]**2+x[0]**2) print(result)(30, -100)4)将点按照点到x轴的距离大小从大到小排序
result=sorted(points,key=lambda x:x[1]**2) print(result)[(10, 20), (-10, 20), (20, 30), (0, 100), (30, -100)] -
封装一个函数完成斗地主发牌的功能
import random list1=['3','4','5','6','7','8','9','10','J','Q','K','A','2'] list2=['方块','梅花','红桃','黑桃'] list4=[] for i in list1:for j in list2:list4.append(j+i) list4.extend(['小王','大王']) #生成有序的牌组 list3=list4[:] #复制有序列表list4 print('------------------------华丽的分割线-------------------------') random.shuffle(list4) #打乱排序 i1=iter(list4) player1=[] player2=[] player3=[] # 给三个玩家发牌 for i in range(17):player1.append(next(i1))player2.append(next(i1))player3.append(next(i1)) a=random.randint(0,2) # 随机给予某个玩家地主,发最后三张牌 if a==0:player1.extend(list(i1)) elif a==1:player2.extend(list(i1)) elif a==2:player3.extend(list(i1)) # 玩家到手的排,顺序混乱 print(player1,len(player1)) print(player2,len(player2)) print(player3,len(player3)) print('------------------------华丽的分割线-------------------------') def sort_(player1,list0): # 玩家手牌排序list3=list0[:]nums=[]for i in player1:if i in list3:nums.append(list3.index(i))for i in range(len(list3)-1,-1,-1):if i not in nums:list3.pop(i)return list3 print((sort_(player1,list3))) #玩家1的手牌排序 print((sort_(player2,list3))) #玩家2的手牌排序 print((sort_(player3,list3))) #玩家3的手牌排序['方块3', '方块4', '红桃4', '红桃5', '黑桃5', '红桃6', '方块8', '方块9', '梅花9', '方块10', '梅花10', '方块J', '方块K', '红桃K', '方块A', '黑桃A', '方块2'] ['红桃3', '黑桃4', '梅花5', '黑桃6', '红桃7', '红桃9', '黑桃9', '红桃10', '黑桃10', '方块Q', '梅花Q', '红桃Q', '黑桃Q', '梅花K', '梅花A', '红桃A', '小王'] ['梅花3', '黑桃3', '梅花4', '方块5', '方块6', '梅花6', '方块7', '梅花7', '黑桃7', '梅花8', '红桃8', '黑桃8', '梅花J', '红桃J', '黑桃J', '黑桃K', '梅花2', '红桃2', '黑桃2', '大王']
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
