Python入门第18课——推导式(只读课堂)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值