请问如何用 Python 实现如下计算功能

2019-01-03 10:11:17 +08:00
 talentl
对于列表中的所有数,计算 2 的 i 次幂的和
比如
range (1,5)
sum= 2^1+2^2+2^3+2^4+2^5

刚开始学习,可能问题很初级,还望不吝赐教,非常感谢
3455 次点击
所在节点    Python
40 条回复
hahastudio
2019-01-03 15:53:31 +08:00
range(a, b): 2 ** (b + 1) - 2 ** a
talentl
2019-01-03 16:04:52 +08:00
@hahastudio 如果(a,b)不是连续数列你这个方法就不行了
Xiaobaixiao
2019-01-03 16:23:00 +08:00
sum([2<<i for i in 你的列表])/2
talentl
2019-01-03 16:29:16 +08:00
@Xiaobaixiao 不对呢亲
sum([2<<i for i in (1,6)])/2
Out: 66
YvesX
2019-01-03 16:32:31 +08:00
楼主还在会搞错缩进的阶段,你们秀什么位运算……
帮助新人要像 4L 好同志学习……
hflyf123
2019-01-03 16:33:51 +08:00
@YvesX 哈哈楼里高手很多啊,辣么大表达式都用上,可是新手接触这个太早了
msg7086
2019-01-03 16:40:20 +08:00
求 1 到 5 范围的话 (1<<6)-1 就行了
Azone
2019-01-03 17:14:37 +08:00
reduce(lambda x, y: x + 2 ** y, range(1, 6))
Azone
2019-01-03 17:20:18 +08:00
reduce(lambda x, y: x + 2 ** y, range(1, 6), 0)
Gempty
2019-01-03 17:25:59 +08:00
@hflyf123 我竟然没想到可以这么写
Cooky
2019-01-03 17:52:30 +08:00
@talentl 等差数列都没学过吗?
Cooky
2019-01-03 17:54:32 +08:00
@talentl 啊不对不是等差,反正有公式
HuahuaWang
2019-01-03 18:42:34 +08:00
@talentl 两个相减不就行了吗。。。
alvin666
2019-01-03 18:44:38 +08:00
lz 缩进都不会楼上就别为难 lz 了...
talentl
2019-01-04 09:53:43 +08:00
@Cooky
@HuahuaWang
如果不是有规律数列呢,公式也能套用吗?
AlexMercerZ
2019-01-04 16:06:50 +08:00
sum([2**i for i in range(1, 5)]) 列表推导式 最 python 的用法
talentl
2019-01-04 16:12:04 +08:00
@AlexMercerZ
这是最符合我水平的答案,谢谢
AlexMercerZ
2019-01-04 16:33:23 +08:00
@talentl py 的精髓就是简单 易用 复杂,晦涩的不可取 越简单越好 个人觉得
a226679594
2019-01-07 08:34:06 +08:00
这好像我初中做的数学题
talentl
2019-01-07 09:58:25 +08:00
@a226679594
求通项公式是不

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/523355

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX