<<在Python中做什么?

gtm*_*red 5 python

我在Project Euler上解决了一个问题,但运行大约需要4分钟,这超过了建议的时间,所以我在论坛中查看了不同的解决方案.其中一个包括<<列表理解中的符号.这就是它的样子

blist.extend([(i << 1) + 3 for i in range(num) if alist.get(i)])  
Run Code Online (Sandbox Code Playgroud)

我无法找到这个<<符号究竟是什么.有人能帮我吗?

小智 10

它是一个移位运算符(Python docs),并且在许多编程语言中很常见,例如C,Java,PHP等.根据Python文档:

它们将第一个参数向左或向右移动第二个参数给出的位数.

右移n位被定义为除以pow(2,n).左移n位被定义为与pow(2,n)的乘法.负移位数会引发ValueError异常.

所以在你的具体情况下,i << 1意味着左移1位,相当于乘以2 ^ 1,或者只是2.