Python之匿名函数,循环

一 匿名函数

定义:

 

匿名就是没有名字
lambda x,y,z:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用一次就释放,除非让其有名字

(lambda x,y,z:x+y+z)(1,2,3)

 

 

有名与匿名的对比:

#有名函数与匿名函数的对比
有名函数:循环使用,保存了名字,通过名字就可以重复引用函数功能

匿名函数:一次性使用,随时随时定义

应用:max,min,sorted,map,reduce,filter

 

二 多层循环跳出

for

 for 循环提供了python中最强大的循环结构(for循环是一种迭代循环机制,而while循环是条件循环,迭代即重复相同的逻辑操作,每次操作都是基于上一次的结果,而进行的)

遍历序列类型:

letter_list = ['a','b','c','d']

#通过序列项迭代
for i in letter_list:
    print(i)


#通过序列索引迭代
for i in range(len(letter_list)):
    print('index is {},letter is {}'.format(i,letter_list[i]))


#基于enumerate的 项和索引
for i,letter in enumerate(letter_list,1):     # 1,代表索引 从1,开始
    print('index is {},letter is {}'.format(i,letter))

 

 1 break_flag = False
 2 
 3 for i in range(10):
 4 
 5     print('--->A层',i)
 6 
 7     for j in range(10):
 8         print('------>B层',j)
 9 
10         if j == 3:
11             break_flag = True
12             break
13 
14 
15         for k in range(10):
16             print('--------->C层',k)
17             if k == 3:
18                 break_flag = True
19                 break
20 
21         if break_flag:
22             break
23 
24     if break_flag:  #if break_flag == True
25         print('C层结束,那都结束吧')
26         break
27 
28 print('keep going ......')
for 多层

 

###运行结果

--->A层 0
------>B层 0
--------->C层 0
--------->C层 1
--------->C层 2
--------->C层 3
C层结束,那都结束吧
keep going ......

 

while

 1 break_flag = False
 2 
 3 count = 0
 4 while break_flag == False:
 5     print('--->爷爷层')
 6 
 7     while break_flag == False:
 8         print('------>爸爸层')
 9 
10         while break_flag == False:
11             count += 1
12             if count > 3:
13                 break_flag = True
14 
15             print('-------->最后一层')
16 
17 
18 print('keep going .......')
while 多层
###运行结果

--->爷爷层
------>爸爸层
-------->最后一层
-------->最后一层
-------->最后一层
-------->最后一层
keep going .......

 

三 九九乘法表

                           for

#
-----1 for i in range(1, 10): for j in range(1, i + 1): print(j, 'x', i, '=', i * j , end='\t') print() #-----2 for i in range(1,10): for j in range(1,10): print(j,'x',i,'=',i*j,end='\t') if i == j: print('') break

 

                                       while
i = 0 j = 0 while i<9: i+=1 while j<9: j+=1 print(j,'*',i,'=',i*j,end='\t') if i == j: print('') j=0 break

 

 

 

补充:

i = 0
for i in range(5):

    j = 0
    flag = True

    while j < 3:
        print(i,j)
        j += 1

        if i==j:
            flag = False
            break
    if flag == False:
        break



##结果
0 0
0 1
0 2
1 0
1

 

def test4():
    a = 1
    yield a
    b = 1
    yield b
    while True:
        c = a+b
        yield c
        a = b
        b = c

l = test4()
print(l.__next__())     #1
print(l.__next__())     #1
print(l.__next__())     #2
print(l.__next__())     #3
print(l.__next__())     #5
print(l.__next__())     #8
2

 

转载于:https://www.cnblogs.com/zhaochangbo/p/6705530.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值