2018.6.23 学习日志-----列表生成式

在慕课网上学习了廖雪峰老师的《python入门》然后进行总结
网址:https://www.imooc.com/learn/177

1.
生成列表
要生成list[1,2,3,4],我们可以用list(range(1,5))

>>> list(range(1,5))
[1, 2, 3, 4]

如果要生成[1*1,2*2,3*3,4*4]该怎么做呢?
一般来说我们都会想到利用循环

>>>ls=[]
>>> for i in range(1,5):
    ls.append(i*i)


>>> print(ls)
[1, 4, 9, 16]

这样子太繁琐,引出了列表生成式
利用列表生成式解决上面的问题:

>>> [x*x for x in range(1,5)]
[1, 4, 9, 16]

做个一练习:

请利用列表生成式生成列表 [1x2, 3x4, 5x6, 7x8, …, 99x100]

>>>print([x*(x+1) for x in range(1,100,2)])
[2, 12, 30, 56, 90, 132, 182, 240, 306, 380, 462, 552, 650, 756, 870, 992, 1122, 1260, 1406, 1560, 1722, 1892, 2070, 2256, 2450, 2652, 2862, 3080, 3306, 3540, 3782, 4032, 4290, 4556, 4830, 5112, 5402, 5700, 6006, 6320, 6642, 6972, 7310, 7656, 8010, 8372, 8742, 9120, 9506, 9900]

2.条件过滤
列表生成式的 for 循环后面还可以加上 if 判断。例如:
如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选:

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

只有if为True的时候,才把循环的当前元素添加到列表当中

3.多层表达式
for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。

>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

猜你喜欢

转载自blog.csdn.net/yk_0311/article/details/80781429