Python中的<<有什么作用?

6 投票
3 回答
5297 浏览
提问于 2025-04-16 20:41

我在Project Euler上解决了一个问题,但运行时间大约花了4分钟,这超过了推荐的时间,所以我在论坛上查看了不同的解决方案。其中一个方案在列表推导式中用了一个符号<<。它的样子是这样的:

blist.extend([(i << 1) + 3 for i in range(num) if alist.get(i)])  

我找不到这个<<符号到底是干什么用的。有人能帮我解释一下吗?

3 个回答

1

这就是左移运算符。它会把变量 i 中的所有二进制位向左移动一步,实际上就是把 i 乘以 2。

http://docs.python.org/py3k/reference/expressions.html#shifting-operations

1

这是一个二进制位移运算符。

x << n
x shifted left by n bits

x >> n
x shifted right by n bits
10

这是一个位移运算符(可以参考Python文档),在很多编程语言中都很常见,比如C、Java、PHP等等。根据Python文档的解释:

它们会把第一个参数向左或向右移动,移动的位数由第二个参数决定。

向右移动n位可以理解为用2的n次方去除,而向左移动n位则是用2的n次方去乘。负的移动位数会引发一个ValueError错误。

所以在你的例子中,i << 1表示向左移动1位,这就相当于乘以2的1次方,也就是2。

撰写回答