我正在学习python,却偶然发现了我不了解的东西。
例如:
x = 50
while x:
print(x)
x >>= 1
输出:
50
25
12
6
3
1
因此,我推断如果不是整数或类似的数字,它将除以2并向左舍入。
但是,例如,当我将其更改为x >> = 3时,输出为:
50
6
有人可以解释>> =做什么吗?
如果是这样,这种运算符有什么有用的应用程序。
最佳答案
>>=
是augmented assignment statement的>>
right-shift operator。对于int
之类的不可变类型,它与以下内容完全相同:
x = x >> 1
将
x
中的位右移一位。如果先打印
x
的二进制表示形式,则可以看到它的作用:>>> x = 50
>>> format(x, '08b')
'00110010'
>>> x >>= 1
>>> format(x, '08b')
'00011001'
>>> x = 50
>>> x >>= 3
>>> format(x, '08b')
'00000110'
>>> x
6
每次向右移动等于将地板除以2;因此,将3个移位视为
x
被2除以3的幂,然后下限为整数。互补运算符是左移
<<
运算符,将左整数乘以2;反之亦然。它是二进制的2的幂的运算符:>>> x = 6
>>> format(x, '08b')
'00000110'
>>> x <<= 3
>>> x
48
>>> format(x, '08b')
'00110000'
扩展赋值运算符应用于可变类型(例如列表对象)的可变行为时,其行为可以就地进行。例如,
listobj += [1, 2, 3]
会更改listobj
本身,而不创建新的列表对象,就像调用listobj.extend([1, 2, 3])
一样。