python-推导式


列表推导式分为两种模式:
     1.循环模式:[变量(加工的变量) for 变量 in iterable]
     2.筛选模式: [变量(加工的变量) for 变量 in iterable if 条件]


1、循环模式

>>> a = [i for i in range(1,11) ]
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


2、筛选模式

>>> a = [i for i in range(1,11) if i%2 == 0 ]
>>> a
[2, 4, 6, 8, 10]


总结:

    1、列表推导式可以构建比较复杂且有规律的数据

    2、超过三层才能构建成功的就不建议使用列表推到方式

    3、在debug的时候没有办法显示中间过程


生成器表达式

把[]换成()就可以了

>>> gen = (i**2 for i in range(10))
>>> print(gen)
<generator object <genexpr> at 0x7fdbf9608d20>


生成器表达式和列表推导表达式区别

  1. 列表推导式比较耗内存,所有数据一次性加载到内存。而.生成器表达式遵循迭代器协议,逐个产生元素。

  1. 得到的值不一样,列表推导式得到的是一个列表.生成器表达式获取的是一个生成器

  2. 列表推导式一目了然,生成器表达式只是一个内存地址。

其它推导式


字典

>>> lst1 = ['Tiger','Lion ','Monkey']
>>> lst2 = ['老虎','狮子','猴子']
>>> dic = {lst1[i]:lst2[i] for i in range(len(lst1))}
>>> print(dic)
{'Tiger': '\xe8\x80\x81\xe8\x99\x8e', 'Lion\xe2\x80\x82': '\xe7\x8b\xae\xe5\xad\x90', 'Monkey': '\xe7\x8c\xb4\xe5\xad\x90'}



集合

>>> lst = [1,2,3,-1,-3,-7,9]
>>> s = {abs(i) for i in lst}
>>> print(s)
set([1, 2, 3, 9, 7])
posted @ 2020-10-13 14:04  MKY-门可意  阅读(87)  评论(0编辑  收藏  举报