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教程就到这了,欢迎继续收看!