Python入门第12课——循环初级(只读课堂)

    科技2022-07-15  123

    In [1]: #欢迎来到“只读课堂”!

     

    In [2]: #今天我们仍然讲循环。

     

    In [3]: #循环中的else:如果再循环过程中没有碰到break语句,就会执行else里面的代码。

     

    In [4]: random_numbers = [4,2,4]

     

    In [5]: for number in random_numbers:

       ...: if number %2 == 0:

       ...: print('{}is偶数'.format(number))

       ...: else:

       ...: break

       ...:

       ...: print('没有结束')

       ...: else:

       ...: print('全是偶数')

       ...:

    4is偶数

    没有结束

    2is偶数

    没有结束

    4is偶数

    没有结束

    全是偶数

     

    In [6]: #如果要再整洁一点:

     

    In [7]: for number in random_numbers:

       ...: if number %2 == 0:

       ...: print('{} is 偶数'.format(number))

       ...: else:

       ...: break

       ...:

       ...: print('没有结束')

       ...: else:

       ...: print('全是偶数')

       ...:

    4 is 偶数

    没有结束

    2 is 偶数

    没有结束

    4 is 偶数

    没有结束

    全是偶数

     

    In [8]: #————————————————————————————————————————————————————————————————————————

     

    In [9]: # for 循环可以构建推导式

     

    In [10]: #推导式,就是一种从一个数据序列构建另一个数据序列的方法。

     

    In [11]: random_numbers = list(range(10))

     

    In [12]: random_numbers

    Out[12]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

     

    In [13]: #构建一个新的列表:

     

    In [14]: new_numbers = []

     

    In [15]: for number in random_numbers:

        ...: new_numbers.qppend(number*10)

        ...:

    ---------------------------------------------------------------------------

    AttributeError Traceback (most recent call last)

    <ipython-input-15-c80e927dcf3f> in <module>()

    1 for number in random_numbers:

    ----> 2 new_numbers.qppend(number*10)

    3

     

    AttributeError: 'list' object has no attribute 'qppend'

     

    In [16]: for number in random_numbers:

        ...: new_numbers.append(number*10)

        ...:

     

    In [17]: new_numbers

    Out[17]: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

     

    In [18]: #这样写就是一个非常复杂的语句,而我们用推导式的时候就可以把它变简单:

     

    In [19]: new_numbers = [number*10 for number in random_numbers]

     

    In [20]: new_numbers

    Out[20]: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

     

    In [21]: #这样的一行代码,就完成了我们上面两三行代码的工作。

     

    In [22]: #我们将上面的代码称为“列表推导式”。

     

    In [23]: #——————————————————————————————————————————————————————————————————————

     

    In [24]: #字典推导式

     

    In [25]: dict_numbers = {number: 'A' for number in random_numbers}

     

    In [26]: dict_numbers

    Out[26]:

    {0: 'A',

    1: 'A',

    2: 'A',

    3: 'A',

    4: 'A',

    5: 'A',

    6: 'A',

    7: 'A',

    8: 'A',

    9: 'A'}

     

    In [27]: #这个时候,我们就生成了一个字典。用原先的列表,生成了列表。每行都是A。

     

    In [28]: #——————————————————————————————————————————————————————————————————————

     

    In [29]: #语言组推导式

     

    In [30]: #小括号是语言组,中括号是列表,大括号是字典。

     

    In [31]: tuple_numbers = (number*10 for number in random_numbers)

     

    In [32]: tuple_numbers

    Out[32]: <generator object <genexpr> at 0x03883F00>

     

    In [33]: #这里它并没有生成。

     

    In [34]: #它就是说,tuple_numbers现在就是个生成器。

     

    In [35]: #顺便讲一下生成器:

     

    In [36]: list(tuple_numbers)

    Out[36]: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

     

    In [37]: #我们可以用list给tuple进行一个转换,这样,它就成了一个列表。也可以这样:

     

    In [38]: tuple(tuple_numbers)

    Out[38]: ()

     

    In [39]: #这是运行第二次的时候,就变成了一个空列表。这时因为,它本身就只能生成一次!

     

    In [40]: print("\n本次“只读课堂”的python教程就到这了,欢迎继续收看!\n")

     

    本次“只读课堂”的python教程就到这了,欢迎继续收看!

    Processed: 0.011, SQL: 8