关于#python#的问题:列表推导式

描述
计算 1+(1+2)+(1+2+3)+.+(1+2+3+.+n)
输入描述:
输入一个整数
输出描述:
输出一个整数
示例1
输入:
4
输出:
20

想用列表推导式做
为什么第一个print错了,第二个是对的

img

因为两个推导式里n的指代不一样,第一个指向了全局变量,第二个指向了局部变量。
用颜色给你配对标记出来了:

img

sum(range()) 就能计算累和了,所以内层的推导式可以省掉

sum(sum(range(1,i+1)) for i in range(1,n+1))

外层从0开始,那前面就要i+1
sum(sum(range(1,i+2)) for i in range(n))

内层从0加值不变,所以1,也不要了:
sum(sum(range(i+2)) for i in range(n)) #这个式子比较精简