|  |      1metaquant      2019-01-03 10:14:24 +08:00 sum([x**x for x in range(1,6)]) | 
|  |      2metaquant      2019-01-03 10:15:25 +08:00 好吧,看错了,底数都是 2,那就是 sum([2**x for x in range(1,6)]) | 
|  |      3Trim21      2019-01-03 10:15:32 +08:00 用内置的 map 函数 d = list(range(1, 5)) print(list(map(lambda x: 2 ** x, d))) | 
|  |      4hflyf123      2019-01-03 10:17:09 +08:00 res = 0 for i in range(1, 5): res += 2 ** i print(res) 你问的时候心里应该就有答案了 | 
|  |      5aijam      2019-01-03 10:20:15 +08:00 sum(2**x for x in range(1,6)) | 
|      6xpresslink      2019-01-03 10:30:17 +08:00  1 >>> from functools import reduce >>> reduce(lambda x,y: x+2**y, range(1,6), 0) 62 | 
|      8talentl OP | 
|      9talentl OP @hflyf123  我按你的建议执行的时候这样报错,哪里不对吗: File "<ipython-input-16-74b7a4201d82>", line 3 res += 2 ** i ^ IndentationError: expected an indented block | 
|  |      10shoujiaxin      2019-01-03 10:53:18 +08:00 via iPhone 等比数列求和公式? | 
|      13HuahuaWang      2019-01-03 10:58:48 +08:00 2^(i+1)-1 | 
|      14talentl OP | 
|      15talentl OP | 
|  |      16Cooky      2019-01-03 11:23:20 +08:00 via Android @HuahuaWang 是 2^(i+1)-2 | 
|      17talentl OP | 
|  |      18ivamp      2019-01-03 15:12:03 +08:00 python3.6 版本 ------------------------------------------------- from functools import reduce c = 0 a = range(1, 6) print(list(a)) for x in list(a): b = 2 ** x c += b print('方法 1:', c) d = sum(list(2**x for x in range(1, 6))) print('方法 2:', d) e = sum([2**x for x in range(1, 6)]) print('方法 3:', e) f = sum(map(lambda x: 2**x, range(1, 6))) print('方法 4:', f) g = reduce(lambda x, y: x+y, [2**x for x in range(1, 6)]) print('方法 5:', g) ---------------------------------------------------------------------------------------- 下面是打印结果: [1, 2, 3, 4, 5] 方法 1:62 方法 2:62 方法 3:62 方法 4:62 方法 5:62 | 
|      19czhuyu      2019-01-03 15:41:32 +08:00 为啥不用位运算呢 | 
|  |      21hahastudio      2019-01-03 15:53:31 +08:00 range(a, b): 2 ** (b + 1) - 2 ** a | 
|      22talentl OP @hahastudio 如果(a,b)不是连续数列你这个方法就不行了 | 
|  |      23Xiaobaixiao      2019-01-03 16:23:00 +08:00 sum([2<<i for i in 你的列表])/2   | 
|      24talentl OP | 
|  |      25YvesX      2019-01-03 16:32:31 +08:00  1 楼主还在会搞错缩进的阶段,你们秀什么位运算…… 帮助新人要像 4L 好同志学习…… | 
|  |      27msg7086      2019-01-03 16:40:20 +08:00  1 求 1 到 5 范围的话 (1<<6)-1 就行了 | 
|      28Azone      2019-01-03 17:14:37 +08:00 reduce(lambda x, y: x + 2 ** y, range(1, 6)) | 
|      29Azone      2019-01-03 17:20:18 +08:00 reduce(lambda x, y: x + 2 ** y, range(1, 6), 0) | 
|      30NB40B938mff85mtq      2019-01-03 17:25:59 +08:00 @hflyf123 我竟然没想到可以这么写 | 
|      33HuahuaWang      2019-01-03 18:42:34 +08:00 @talentl 两个相减不就行了吗。。。 | 
|      34alvin666      2019-01-03 18:44:38 +08:00 via Android lz 缩进都不会楼上就别为难 lz 了... | 
|      35talentl OP | 
|      36AlexMercerZ      2019-01-04 16:06:50 +08:00 sum([2**i for i in range(1, 5)]) 列表推导式 最 python 的用法 | 
|      37talentl OP @AlexMercerZ  这是最符合我水平的答案,谢谢 | 
|      38AlexMercerZ      2019-01-04 16:33:23 +08:00 @talentl py 的精髓就是简单 易用 复杂,晦涩的不可取 越简单越好 个人觉得 | 
|  |      39a226679594      2019-01-07 08:34:06 +08:00 这好像我初中做的数学题 | 
|      40talentl OP @a226679594  求通项公式是不 |