第十三章 while和for循环

#1.
#A:while语句和for语句有一个可选的else部分,当控制权离开循环且没有遇见break语句时候执行
#B:python3中可以使用pass充当占位语句,也允许在任何地方使用...来省略代码
#C:while (value = 10):pass 编译通不过,在python中,表达式可以作为语句出现,但是语句不能用作表达式
value = "123"
while value:
    print(value, end = ' ')
    value = value[1:]
else:
    print(value + " done")
#输出123 23 3  done

value = "123"
for v in value:
    print(v, end = ' ')
else:
    print(v + " done")
#输出1 2 3 3 done

value = "123"
while value:
    ...
    break
else:
    print("")           #不会执行至此
    
value = ...             #value = Ellipsis ellipsis	英[ɪˈlɪpsɪs]美[ɪˈlɪpsɪs]n.(语法结构上的) 省略;
value1 = bool(value)    #value1 = True

#2.
#A:单词for之后的任何赋值目标在语法上都是有效的
#B:在python中while的性能可能会比等效的for更低
for ((a, b), c) in [((1, 2), 3), ["ab", 'c']] : print(a, b, c, end = ' ', flush = True) #1 2 3 a b c
for a, *b in [(5, 6, 7), "abc"] : print(a, *b, end = ' ', flush = True)                 #5 6 7 a b c

#3.
#A:zip会取得一个或多个序列为参数,然后返回元组的列表,将这些序列中的并排元素配成对。zip在python3中是一个可迭代对象
#B:当参数长度不同时候,zip会以最短序列长度为准来得到元组的列表
#C:对zip的调用也可以产生字典
L1 = [1, 2, 3]
L2 = ['a', 'b', ('c', 'd')]
L3 = list(zip(L1, L2))      #L3 = [(1, 'a'), (2, 'b'), (3, ('c', 'd'))]
L4 = list(zip(L1))          #L4 = [(1,), (2,), (3,)]
L5 = list(zip(L1, L2, L3))  #L5 = [(1, 'a', (1, 'a')), (2, 'b', (2, 'b')), (3, ('c', 'd'), (3, ('c', 'd')))]

L6 = [1]
L7 = ['a', 'b']
L8 = list(zip(L6, L7))      #L8 = [(1, 'a')]
dict0 = dict(zip(L6, L7))   #dict0 = {1: 'a'}

#3.
#A:enumerate函数返回一个生成器对象,这个对象有一个__next__方法,由下一个内置函数调用,返回一个元组,得到序列元素值和偏移位置
'''
enumerate	英[ɪˈnju:məreɪt]
美[ɪˈnu:məreɪt]
vt.	列举
'''
L1 = ['a', 1, 'szn']
Fun = enumerate(L1)
value0 = next(Fun)          #value0 = (0, 'a')
value0 = next(Fun)          #value0 = (1, 1)
value0 = next(Fun)          #value0 = (2, 'szn')

  

原文地址:https://www.cnblogs.com/szn409/p/6636641.html