小门板儿

Menu

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']

— 于 共写了795个字
— 标签:

评论已关闭。