列表生成式即List Comprehensions,是Python内置的可以用来创建list的生成式。
生成一个连续的数字类型列表,比如[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...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)
原文:https://www.cnblogs.com/rissa/p/14930102.html