我在欧拉计划上解决了一个问题,但运行时间约为4分钟,超出了建议的时间,因此我正在浏览论坛中的不同解决方案。其中一个解决方案在列表推导式中包含符号<<
。它看起来像这样
blist.extend([(i << 1) + 3 for i in range(num) if alist.get(i)])
我找不到任何关于这个<<
符号的确切含义。有人能帮我吗?
我在欧拉计划上解决了一个问题,但运行时间约为4分钟,超出了建议的时间,因此我正在浏览论坛中的不同解决方案。其中一个解决方案在列表推导式中包含符号<<
。它看起来像这样
blist.extend([(i << 1) + 3 for i in range(num) if alist.get(i)])
我找不到任何关于这个<<
符号的确切含义。有人能帮我吗?
i << 1
表示左移1位,相当于乘以2^1,或者只是2。这是一个二进制位移操作符。
x << n
x shifted left by n bits
x >> n
x shifted right by n bits
这是左移运算符。它将 i 中的所有位向左移动 1 步,有效地将 i 乘以 2。
http://docs.python.org/py3k/reference/expressions.html#shifting-operations