本文已参与「新人创作礼」活动,一起开启掘金创作之路。
列表推导式是从一个或者多个列表快速简洁地创建列表的一种方法,又被称为列表解析。它可以将循环和条件判断结合,从而避免语法冗长的代码同时提高程序性能。会使用推导式,说明已经达到Python初学者的水平了。使用列表推导式更符合Python的编程风格。
通过列表推导创建一个整数列表
number_list = [number for number in [1,2,3,4,5]]
print(number_list)
在第一行中,第一个number变量为列表生成值,也就是说,把循环结果放在列表number_list中。第二个number为循环变量。其中第一个number位置可以为表达式。如下:
number_list = [2*number for number in [1,2,3,4,5]]
print(number_list)
列表推导把循环放在括号内。这种例子和以前的大不一样,确实更为常见的方式。同样,列表推导式也可以加上if条件:
number_list = [number for number in range(1,8) if number % 2 == 1]
print(number_list)
下面给些例子
1.求1+1/2+...+1/20之和。
print(sum([1/i for i in range(1,21)]))
程序输出:
3.597739657143682
2.求1-1/2+1/3-1/4+...之前n项和(n>=10)
如何产生这样的列表?
[1,-1/2,1/3,-1/4,...]
下面列表推导式产生列表:[1,-1/2,1/3,-1/4,1/5]
>>>[1/i if i%2==1 else -1/i for i in range(1,6)]
[1.0,-0.5,0.33333333333333,-0.25,0.2]
“1/i if 1%2==1 else -1/i”是条件表达式,表示奇数项为正,偶数项为负。
程序代码:
n = int(input())
print(sum([1/i if i%2==1 else -1/i for i in range(1,n+1)]))
程序输入:
100
程序输出:
0.688172179310195
3.求1-1/3+1/5-1/7+...-1/47+1/49。
列表推导式的if条件和条件表达式可以同时使用。
程序代码:
print(sum([1/i if i%4==1 else -1/i for i in range(1,50) if i%2==1 ]))
程序输出:
0.7953941713587581
4. 6是一个幸运数字,求6+66+666+...+6666...666(n个6,5<=n<=10)的和
程序代码:
n = int(input())
print(sum([int('6'*i) for i in range(1,n+1)]))
程序输入:
7
程序输出:
7407402
\