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 1
>>> 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 1
楼主还在会搞错缩进的阶段,你们秀什么位运算……
帮助新人要像 4L 好同志学习…… |
27
msg7086 2019-01-03 16:40:20 +08:00 1
求 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 我竟然没想到可以这么写
|
33
HuahuaWang 2019-01-03 18:42:34 +08:00
@talentl 两个相减不就行了吗。。。
|
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
求通项公式是不 |