首页 > 编程语言 > 详细

Python变量、运算符、数据类型及位运算

时间:2020-07-22 23:31:23      阅读:92      评论:0      收藏:0      [点我收藏+]

 

1.注释

 

  • 单行注释:#

  • 多行注释: ‘‘‘    ‘‘‘ (用三个单引号)     """   """(用三个双引号在多行注释开头和结尾)

2.运算符

算术运算符
操作符 名称 示例
+ 1+1
- 2-1
* 3*4
/ 3/4
// 整除 3//4
% 取余 3%4
** 2**3

  

比较运算符
操作符名称示例
> 大于 2 > 1
>= 大于等于 2 >= 4
< 小于 1 < 2
<= 小于等于 5 <= 2
== 等于 3 == 4
!= 不等于 3 != 5
逻辑运算符
操作符名称示例
and (3 > 2) and (3 < 5)
or (1 > 3) or (9 < 2)
not not (2 > 1)
位运算符
操作符名称示例
~ 按位取反 ~4
& 按位与 4 & 5
| 按位或 4 | 5
^ 按位异或 4 ^ 5
<< 左移 4 << 2
>> 右移 4 >> 2

  

其他运算符
操作符名称示例
in 存在 ‘A‘ in [‘A‘, ‘B‘, ‘C‘]
not in 不存在 ‘h‘ not in [‘A‘, ‘B‘, ‘C‘]
is "hello" is "hello"
is not 不是 "hello" is not "hello"
  • is, is not 对比的是两个变量的内存地址
  • ==, != 对比的是两个变量的值
  • 比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
  • 对比的两个变量,指向的是地址可变的类型(list,dict等),则两者是有区别的。
  • 一元运算符优于二元运算符。例如3 ** -2等价于3 ** (-2)
  • 先算术运算,后移位运算,最后位运算。例如 1 << 3 + 2 & 7等价于 (1 << (3 + 2)) & 7
  • 逻辑运算最后结合。例如3 < 4 and 4 < 5等价于(3 < 4) and (4 < 5)。  

3.数据类型与转换

类型名称示例
int 整型 <class ‘int‘> -876, 10
float 浮点型<class ‘float‘> 3.149, 11.11
bool 布尔型<class ‘bool‘> True, False

 1 a = 1031 2 print(a, type(a)) 3 # 1031 <class ‘int‘> 

  • 转换为整型 int(x, base=10)
  • 转换为字符串 str(object=‘‘)
  • 转换为浮点型 float(x)

5.位运算  

二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示。

原码:就是其二进制表示(注意,最高位是符号位)。

反码:正数的反码就是原码,负数的反码是符号位不变,其余位取反(对应正数按位取反)。

补码:正数的补码就是原码,负数的补码是反码+1。

符号位:最高位为符号位,0表示正数,1表示负数。在位运算中符号位也参与运算。

按位非操作 ~

~ 把num的补码中的 0 和 1 全部取反(0 变为 1,1 变为 0)有符号整数的符号位在 ~ 运算中同样会取反。

按位与操作 &

只有两个对应位都为 1 时才为 1

按位或操作 |

只要两个对应位中有一个 1 时就为 1

按位异或操作 ^

只有两个对应位不同时才为 1、异或操作的性质:满足交换律和结合律

按位左移操作 <<

num << i 将num的二进制表示向左移动i位所得的值。

 按位右移操作 >>

num >> i 将num的二进制表示向右移动i位所得的值。
  • Python中bin一个负数(十进制表示),输出的是它的原码的二进制表示加上个负号,巨坑。
  • Python中的整型是补码形式存储的。
  • Python中整型是不限制长度的不会超范围溢出。
  • 为了获得负数(十进制表示)的补码,需要手动将其和十六进制数0xffffffff进行按位与操作,再交给bin()进行输出,得到的才是负数的补码表示。

leetcode 习题 136. 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

尝试使用位运算解决此题。

"""
Input file
example1: [2,2,1]
example2: [4,1,2,1,2]

Output file
result1: 1
result2: 4
"""



class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        
     # your code here
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        c = 0
        for x in nums:
            c ^= x
        print(c)
l1 = [1, 2, 2]
l2 = [4, 1, 2, 1, 2]
s = Solution()
s.singleNumber(l1)
# 1
s.singleNumber(l2)
# 4
  • 任何数与自身异或结果为 0。
  • 任何数与 0 异或结果为本身。

只需将数组里面的整数一起按位异或即可。

 

Python变量、运算符、数据类型及位运算

原文:https://www.cnblogs.com/titaniumwu/p/13363494.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!