什么<<用Python做什么?

时间:2011-07-02 00:41:34

标签: python

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

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

我无法找到这个<<符号的确切位置。有人能帮我吗?

3 个答案:

答案 0 :(得分:10)

它是bit shift operator (Python docs),在许多编程语言中很常见,例如C,Java,PHP等。根据Python文档:

  

他们将第一个参数转移到了   按位数向左或向右   由第二个论点给出。

     

右移n位定义为   由pow(2,n)划分。左移   n位定义为乘法   用pow(2,n)。负移位计数   提出ValueError例外。

因此,在您的具体情况下,i << 1表示左移1位,相当于乘以2 ^ 1,或者只是2。

答案 1 :(得分:1)

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

x << n
x shifted left by n bits

x >> n
x shifted right by n bits

答案 2 :(得分:1)

那是左移算子。它将i中的所有位向左移动1步,实际上将i乘以2。

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