Python学习之列表生成式

定义

列表生成式即List Comprehensions,是Python内置的可以用来创建list的生成式。

range()函数

生成一个连续的数字类型列表,比如[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],可以用range生成。

如果直接打印range对象,并不是直接显示列表,如果想显示列表,可以用list()转换。

实例:

range_num = range(1, 21)
print(range_num)
print(type(range_num))
print(list(range_num))

结果:

列表生成式

如果要对列表里的数据进行一定的运算后,生成一个新的列表,列表生成式可以简化代码。

如:要求生成一个[1*1,2*2,3*3,...]的列表

使用for循环

temp = []
range_num = range(1, 11)
for x in range_num:
    temp.append(x*x)
print('普通for循环:%s' % temp)

使用列表生成式

temp = []
range_num = range(1, 11)
temp_demo = [x*x for x in range_num]
print('列表生成式:%s' % temp_demo)

带if判断

对运算生成的列表的内容有筛选,可以在列表生成式中使用判断语句if...else。

但是要注意的是:if在for后面,不能带else;if在for前面,必须要带else。for前面的if ... else是表达式,而for后面的if是过滤条件。

实例:

1、生成仅偶数的平方的列表[4,16,36,.....]

temp_demo1 = [x*x for x in range(1, 21) if x % 2 == 0]
print(temp_demo1)

2、生成偶数的平方,奇数的平方的负数的列表[-1,4,-9,16.....]

temp_demo2 = [x*x if x % 2 == 0 else -x*x for x in range(1, 21)]
print(temp_demo2)

双重循环

# 双重循环
temp_demo3 = [m + n for m in 'ABC' for n in 'XYZ']
print(temp_demo3)

多个参数

实例:有两个列表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)

posted @ 2021-06-25 11:17  rissa  阅读(966)  评论(0)    收藏  举报

记录学习笔记,会有很多是参考重复,如有侵权,联系删除