python3-列表生成式
列表生成式 ,是Python内置的非常简单却强大的可以用来创建list的生成式 ,可以更好地简洁的实现代码
1、基础用法
不用列表生成式来生成一个列表时
list=[]
for i in range(5):
list.append(i)
print(list)
执行结果:[0, 1, 2, 3, 4]
使用列表生成式生成一个列表时:
list=[i for i in range(5)]
print(list)
执行结果:[0, 1, 2, 3, 4]
2、与if..else搭配使用
生成一个列表,列表的元素为10以内的平方,且平方数为偶数
list=[x*x for x in range(11) if x*x %2==0]
执行结果:[0, 4, 16, 36, 64, 100]
注意:
不能在for之后的 if 后面加上else,这是因为这时在for后面的if是一个筛选条件,所以不能带;
另外if 写在for 前面,必须带else, 这是因为for
前面的部分是一个表达式,它必须根据x
计算出一个结果。因此,考察表达式:x if x % 2 == 0
,它无法根据x
计算出结果,因为缺少else
,必须加上else
[x if x % 2 == 0 else -x for x in range(1, 11)]
执行结果:[-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]
所以: 在一个列表生成式中,for
前面的if ... else
是表达式,而for
后面的if
是过滤条件,不能带else
。
3、多层循环
list=[x+y for x in'123' for y in 'abc']
执行结果:['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
4、与逻辑运算搭配使用
比如对列表中的字符串进行小写转大写操作
list1 = ["Dog","Cat","pig",123]
list2 = [s.upper() for s in list1 if isinstance(s,str)]
执行结果:['DOG', 'CAT', 'PIG']
- 上一篇:python3-迭代器