In [1]: #欢迎来到“只读课堂”!
In [2]: #这节课给大家讲的是“推导式”。
In [3]: #列表推导式
In [4]: # for value in 序列
In [5]: #例如:
In [6]: mylist = [1,2,3,4,5]
In [7]: new_list = [var*var for var in mylist]
In [8]: new_list
Out[8]: [1, 4, 9, 16, 25]
In [9]: #它就完成了一项工作。
In [10]: #如果不要3这个数字。
In [11]: new_list = [var*var for var in mylist if var != 3]
In [12]: new_list
Out[12]: [1, 4, 16, 25]
In [13]: #3的倍数就不见了。
In [14]: #——————————————————————————————————————————————————————————————————————
In [15]: #如果用了括号:
In [16]: new_list = (var*var for var in mylist if var != 3)
In [17]: new_list
Out[17]: <generator object <genexpr> at 0x0457F240>
In [18]: #这样,它就成了一个“生成器”,这个我们在前面讲过了,但是这里再深入一些。
In [19]: #我们来看一下这个生成器给我们多少种代码使用呢
In [20]: dir(new_list)
Out[20]:
['__class__',
'__del__',
'__delattr__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__lt__',
'__name__',
'__ne__',
'__new__',
'__next__',
'__qualname__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'close',
'gi_code',
'gi_frame',
'gi_running',
'gi_yieldfrom',
'send',
'throw']
In [21]: #它给了很多,我们挑一些讲。
In [22]: new_list.__next__()
Out[22]: 1
In [23]: new_list.__next__()
Out[23]: 4
In [24]: new_list.__next__()
Out[24]: 16
In [25]: new_list.__next__()
Out[25]: 25
In [26]: new_list.__next__()
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-26-b6fdeffd6037> in <module>()
----> 1 new_list.__next__()
StopIteration:
In [27]: #在这之后,它就把所有值取出来了,没有任何值之后,它就说不要再取了。也不算报错。
In [28]: #——————————————————————————————————————————————————————————————————————
In [29]: #字典推导式
In [30]: #它和我们的列表类似,只不过需要两个值存在来维护字典的键值对形式。
In [31]: #例如:
In [32]: mylist = [1,2,3,4,5]
In [33]: mydict = {var:'a' for var in my list}
File "<ipython-input-33-5500e0ed1b81>", line 1
mydict = {var:'a' for var in my list}
^
SyntaxError: invalid syntax
In [34]: mydict = {var:'a' for var in mylist}
In [35]: mydict
Out[35]: {1: 'a', 2: 'a', 3: 'a', 4: 'a', 5: 'a'}
In [36]: #这样就生成了一行以a为值的列表。
In [37]: #——————————————————————————————————————————————————————————————————————
In [38]: #集合推导式
In [39]: #集合推导式跟列表推导式非常相似,唯一区别在于用{}代替[]
In [40]: #;例如:
In [41]: mylist = [1,2,3,4,5]
In [42]: myset = { var + 1 for var in mylist}
In [43]: myset
Out[43]: {2, 3, 4, 5, 6}
In [44]: type(myset)
Out[44]: set
In [45]: #它就成了一个推导式
In [46]: #就是一个集合了。
In [47]: print("\n本次“只读课堂”的python教程就到这了,欢迎继续收看!\n")
本次“只读课堂”的python教程就到这了,欢迎继续收看!