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)

    

  

 

posted @ 2017-11-22 21:15  venicid  阅读(183)  评论(0编辑  收藏  举报