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