对于列表中的所有数,计算 2 的 i 次幂的和
比如
range (1,5)
sum= 2^1+2^2+2^3+2^4+2^5
刚开始学习,可能问题很初级,还望不吝赐教,非常感谢
比如
range (1,5)
sum= 2^1+2^2+2^3+2^4+2^5
刚开始学习,可能问题很初级,还望不吝赐教,非常感谢
|
metaquantJan 3, 2019
1
sum([x**x for x in range(1,6)])
|
|
metaquantJan 3, 2019
2
好吧,看错了,底数都是 2,那就是 sum([2**x for x in range(1,6)])
|
|
Trim21Jan 3, 2019
3
用内置的 map 函数
d = list(range(1, 5)) print(list(map(lambda x: 2 ** x, d))) |
|
hflyf123Jan 3, 2019
4
res = 0
for i in range(1, 5): res += 2 ** i print(res) 你问的时候心里应该就有答案了 |
|
aijamJan 3, 2019
5
sum(2**x for x in range(1,6))
|
|
6
>>> from functools import reduce
>>> reduce(lambda x,y: x+2**y, range(1,6), 0) 62 |
|
8
|
|
9
@hflyf123
我按你的建议执行的时候这样报错,哪里不对吗: File "<ipython-input-16-74b7a4201d82>", line 3 res += 2 ** i ^ IndentationError: expected an indented block |
|
shoujiaxinJan 3, 2019 via iPhone
10
等比数列求和公式?
|
|
HuahuaWangJan 3, 2019
13
2^(i+1)-1
|
|
14
|
|
CookyJan 3, 2019 via Android
16
@HuahuaWang 是 2^(i+1)-2
|
|
17
|
|
ivampJan 3, 2019
18
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 |
|
czhuyuJan 3, 2019
19
为啥不用位运算呢
|
|
hahastudioJan 3, 2019
21
range(a, b): 2 ** (b + 1) - 2 ** a
|
|
22
@hahastudio 如果(a,b)不是连续数列你这个方法就不行了
|
|
XiaobaixiaoJan 3, 2019
23
sum([2<<i for i in 你的列表])/2
|
|
24
|
|
25
楼主还在会搞错缩进的阶段,你们秀什么位运算……
帮助新人要像 4L 好同志学习…… |
|
27
求 1 到 5 范围的话 (1<<6)-1 就行了
|
|
AzoneJan 3, 2019
28
reduce(lambda x, y: x + 2 ** y, range(1, 6))
|
|
AzoneJan 3, 2019
29
reduce(lambda x, y: x + 2 ** y, range(1, 6), 0)
|
|
NB40B938mff85mtqJan 3, 2019
30
@hflyf123 我竟然没想到可以这么写
|
|
HuahuaWangJan 3, 2019
33
@talentl 两个相减不就行了吗。。。
|
|
alvin666Jan 3, 2019 via Android
34
lz 缩进都不会楼上就别为难 lz 了...
|
|
35
|
|
AlexMercerZJan 4, 2019
36
sum([2**i for i in range(1, 5)]) 列表推导式 最 python 的用法
|
|
37
@AlexMercerZ
这是最符合我水平的答案,谢谢 |
|
AlexMercerZJan 4, 2019
38
@talentl py 的精髓就是简单 易用 复杂,晦涩的不可取 越简单越好 个人觉得
|
|
a226679594Jan 7, 2019
39
这好像我初中做的数学题
|
|
40
@a226679594
求通项公式是不 |