列表推导式分为两种模式:
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>
生成器表达式和列表推导表达式区别
列表推导式比较耗内存,所有数据一次性加载到内存。而.生成器表达式遵循迭代器协议,逐个产生元素。
得到的值不一样,列表推导式得到的是一个列表.生成器表达式获取的是一个生成器
列表推导式一目了然,生成器表达式只是一个内存地址。
其它推导式
字典
>>> lst1 = ['Tiger','Lion ','Monkey']
>>> lst2 = ['老虎','狮子','猴子']
>>> dic = {lst1[i]:lst2[i] for i in range(len(lst1))}
>>> print(dic)
{'Tiger': 'xe8x80x81xe8x99x8e', 'Lionxe2x80x82': 'xe7x8bxaexe5xadx90', 'Monkey': 'xe7x8cxb4xe5xadx90'}
集合
>>> lst = [1,2,3,-1,-3,-7,9] >>> s = {abs(i) for i in lst} >>> print(s) set([1, 2, 3, 9, 7])