列表生成式
前言
python里面[]表示一个列表,快速生成一个列表可以用range()函数来生成。
对列表里面的数据进行运算和操作,生成新的列表最高效快速的办法,那就是列表生成式了。
range()
1.一个连续的数字类型列表,比如[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],可以用range生成
# coding:utf-8 # a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] b = range(1, 11) print(b) # 结果 range(1, 11) print(type(b)) print(list(b)) # 转list
2.python3直接打印b会显示range(1, 11)对象,并不是直接显示应该列表,如果想显示列表,可以用list()转下
列表生成式
1.如果想对列表里面的数据进行运算后重新生成一个新的列表,如[11, 22, 33 ... 1010],按平常思维就是先定义一个列表c,然后for循环挨个运算,算完了再append添加到c,最后c就是新的列表了
# 对列表数平方 b = range(1, 11) c = [] for i in b: c.append(i*i) print(c) # 结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2.接下来看看用列表生成式如何去实现
# 对列表数平方 b = range(1, 11) c = [x*x for x in b] print(c) # 结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
3.列表生成式语法是固定的,[]里面for 前面是对列表里面数据的运算操作,后面跟平常for循序一样遍历去读取。运行后会自动生成新的列表
带if判断
1.如果想对一个列表里面的数据筛选,比如:[1, 3, -3, 4, -2, 8, -7, 6],找出大于0的数,按正常思维可以for循环挨个判断,符合条件的放到新的列表
c = [1, 3, -3, 4, -2, 8, -7, 6] d = [] for i in c: if i > 0: d.append(i) # 添加到列表d print(d) # 结果:[1, 3, 4, 8, 6]
2.接下来可以看看列表生成式,写出更加简洁优雅的代码,快速高效!
# 提取大于0的数 c = [1, 3, -3, 4, -2, 8, -7, 6] d = [x for x in c if x > 0] print(d) # 运行结果[1, 3, 4, 8, 6]
多个参数
1.前面列表生成式都只传一个参数x,如果有两个列表如何去运算呢?
a = [1, 2, 3, 4, 5]
b = ["a", "b", "c", "d", "e"]
如何得出c = ["a1", "b2", "c3", "d4", "e5"]
# coding:utf-8 a = [1, 2, 3, 4, 5] b = ["a", "b", "c", "d", "e"] # 多个参数列表生成式 c = [str(x)+str(y) for x, y in zip(b, a)] print(c) # 结果:[‘a1‘, ‘b2‘, ‘c3‘, ‘d4‘, ‘e5‘]
2.列表生成式的语法是非常优雅的,学会了可以少写很多代码。理解起来也并不难,多练习几次就能熟练掌握了。