Task01:变量、运算符、数据类型及位运算(2天)

Task01:变量、运算符、数据类型及位运算(2天)

至今为止,我最熟悉、接触最早的程序设计语言是c++,所以在接下来的python基础学习中,我会以c++作为对比,帮助我学习python

一、注释

python中,多行注释用的是(''' '''或""" """),c++中用的是(/* */)
单行注释是(#),c++是(//)
而且在pycharm默认设置中三种注释方法的highlight是不同的

二、运算符

python的运算符与c++的大致相同,我只说明与c++不同的运算符

/   除   python中'/'运算符的结果是浮点型,而c++则取决于操作数
//  整除(地板除) 结果为整型
**  幂   进行幂运算,c++中无此类运算符
and or not 逻辑与 逻辑或 逻辑非 c++中分别为&& || !
if else 三元运算符 功能与c++中的 ? : 相似
还有一些c++中没有的运算符,如:
in 存在   类似于元素与集合之间的属于关系
not in 不存在  元素不属于集合
is 是    
is not 不是
在变量地址不可变时(str等),is 和 is not 等价于 == 和 != , 比较的时两个变量的值
而在地址可变时(list,dict等),is 和 is not 比较的是变量的地址

优先级口诀:
去掉一个最高的,去掉一个最低的,剩下的是一、二、三、赋值。
双目运算符中,顺序为算术、关系和逻辑,移位和逻辑位插入其中
print(3 / 3, 3 // 3)  #1.0, 1
print(3 / 4, 3 // 4)  #0.75, 0
print(2 ** 3)   #8
array = ['A', 'b']
print('A' in array, 'b' not in array)   #True False
a = "yes"
b = "yes"
print(a is b, a == b)   #True True
print(a is not b, a != b)   #False False
a = ["yes"]
b = ["yes"]
print(a is b, a == b)   #False True
print(a is not b, a != b)   #True False
b = a
print(a is b)   #True  说明a与b地址相同

三、数据类型

变量名的命名规则与c++相同
    可以包括字母、数字、下划线、但变量名不能以数字开头
    对大小写敏感
基础数据类型有 整型、浮点型、布尔型
python 里面万物皆对象,基础数据类型都有自己的属性和方法
可以通过dir() 方法查看
type(object) 方法获取类型信息
isinstance(object, classinfo) 判断一个对象是否是一个已知的类型
值得注意的是  type() 不会认为子类是一种父类类型,不考虑继承关系
            isinstance() 会认为子类是一种父类类型,考虑继承关系
类型转换
    python中的类型转换,与c++的强制类型转换类似
    转换为整型 int(x, base=10)
    转换为字符串 str(object='')
    转换为浮点型 float(x)

四、位运算

按位与&
1.如果我要判断a的第j为是0还是1的话,只需要计算出a&(1<<j)的值,如果是1的话该位就是1,反之则反之
2.如果需要判断一个数a是否为2的次幂,只需要计算出a&(a-1)的值,如果是0的话该数是2的次幂,反之则反之
3.取一个数a的最底位的1,用a&-a,例如20(10) = 10100(2),那么20&-20 = 100(2);
4.可以将a的第j位变为0,用a&(0<<j)即可
按位异或^
1.如果需要将a的第j为取反的话,只需要进行 a^(1<<j)即可;
2.利用自反性交换两个数,按位异或有个很神奇的性质--自反性 a^b^b = a;
   利用这个性质我们可以不用第三个变量就能交换两个数;
   例如:我们要交换a和b两个,只需要进行以下操作即可;
              a = a ^ b;
              b = a ^ b;
              a = a ^ b;
按位或|
1.可以将a的第j位变为1,用a|(1<<j)即可
移位运算可以看作对原数进行乘除2的幂。
--转自https://www.luogu.com.cn/blog/111081/wei-yun-suan-ji-ji-gong-neng

练习题leetcode136让我印象最深的是
计算整型变量n的二进制位中1的个数:n & (n - 1)会消去n的最低位1
位运算的另一个用处是在状态压缩dp中的应用
位运算的恰当应用可以有效的提升程序的执行效率

猜你喜欢

转载自blog.csdn.net/qq_43627017/article/details/107524037