列表生成式
python里面[]表示一个列表,快速生成一个列表可以用range()函数来生成。
对列表里面的数据进行运算和操作,生成新的列表最高效快速的办法,那就是列表生成式了。
基本使用方法
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]
带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.用列表生成式
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]
多个参数
前面列表生成式都只传一个参数x,如果有两个列表如何去运算?
a = [1, 2, 3, 4, 5]
b = [“a”, “b”, “c”, “d”, “e”]
得到
c = [“a1”, “b2”, “c3”, “d4”, “e5”]
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’]