day9 匿名函数 lambda
1. list列表排序
#### sort排序 nums = [11,22,332343,4354365,3424,32] nums.sort() print(nums) ### 结果 [11, 22, 32, 3424, 332343, 4354365]
######## 逆序 In [4]: nums.sort(reverse=True) In [5]: nums Out[5]: [434, 343, 43, 34, 34, 34, 13]
##### 翻转 In [6]: nums.reverse() In [7]: nums Out[7]: [13, 34, 34, 34, 43, 343, 434]
2.字典排序
infors = [{"name":"alex","age":14},{"name":"jack","age":54}] infors.sort(key=lambda x:x["age"]) #按照age排序 print(infors)
把list的元素,单个元素字典,传入到x,即 x:x['name'] 就是 {“name”:“alex”,“age”:43} :alex
3.lambda应用:
1)版本1:求11+22
def test(a,b): result = a+b return result num = test(11,22) print(num)
2)版本2:
def test(a,b,func): result = func(a,b) return result num = test(11,22,lambda x,y:x+y) print(num)
3)版本3:动态语言
#-*- coding:utf-8 -*- python2执行 def test(a,b,func): result = func(a,b) return result func_new = input("请输入一个匿名函数:") #python2 input是函数 num = test(11,22,func_new) print(num)
4)版本4:eval 去掉字符串的 “ ”
#### python3 执行 def test(a,b,func): result = func(a,b) return result #func_new = input("请输入一个匿名函数:") func_new = input("请输入一个匿名函数:") func_new = eval(input(func_new)) #eval把字符串的“”去掉 num = test(11,22,func_new) print(num)
3.面试题:交换两个变量的值
1)版本1:空瓶子t
a = 4 b = 5 t = 0 print("a=%s,b=%s"%(a,b)) t = a a = b b = t print("a=%s,b=%s"%(a,b))
2)版本2:不用第三个变量
#### 第2种,不用第三个变量 a = a+b b = a-b a = a-b print("a=%s,b=%s"%(a,b))
3)版本3:python独有
##### 第3种 a,b = b,a print("a=%s,b=%s"%(a,b))
3.num += num 与 num = num +num 的区别
1)版本1:a = 100
### 不可变类型 数字 字符串 元组 a = 100 def test(num): num += num print(num) test(a) print(a)
2)版本2:a = [100]
#a = 100 a = [100] #list列表是可变类型 def test(num): num += num # 直接在num变量的内存地址修改,然后还是指向 a print(num) test(a) print(a)
‘’
3) 版本3: num = num + num
### python中 变量是引用的 #a = 99 a = [100] def test(num): #num += num num = num + num #执行得到结果 [100,100] 然后让 num 再重新指向它 print(num) test(a) print(a)