·学习知识点概要
注释,运算符,变量和赋值、数据类型与转换、print()函数
位运算
·学习内容
1、注释
在 Python 中,# 表示注释,作用于整行。
''' ''' 或者 """ """ 表示区间注释,在三引号之间的所有内容被注释
e.g
print("hello,world") ``` #输出hello,world ```
2、运算符
算术运算符
+加、-减、*乘、/除、//整除(地板除)、%取余、**幂
比较运算符
>大于、>=大于等于、<小于、<=小于等于、==等于、!=不等于
逻辑运算符
and与、or或、not非
位运算符
~按位取反、&按位与、|按位或、^按位异或、<<左移、>>右移
其他运算符
in存在、not in不存在、is是、is not不是
注意:
is, is not 对比的是两个变量的内存地址
==, != 对比的是两个变量的值比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
对比的两个变量,指向的是地址可变的类型(list,dict等),则两者是有区别的。
3、变量和赋值
在使用变量之前,需要对其先赋值。变量名可以包括字母、数字、下划线、但变量名不能以数字开头。Python 变量名是大小写敏感的,foo != Foo。
4、数据类型与转换
int整型
5、print() 函数
Print()括号里输入英文和数字无需“”,而输入文字则需要。
sep是分隔符, sep=' ',
end='n', 换行符
end='&'没有换行
练习题:
Q1:怎样对python中的代码进行注释?
# 表示注释,作用于整行。
''' ''' 或者 """ """ 表示区间注释,在三引号之间的所有内容被注释
# 表示注释,作用于整行。
''' ''' 或者 """ """ 表示区间注释,在三引号之间的所有内容被注释
Q2:python有哪些运算符,这些运算符的优先级是怎样的?
运算符的优先级一元运算符优于二元运算符。先算术运算,后移位运算,最后位运算。逻辑运算最后结合。
Q3:python 中 is, is not 与 ==, != 的区别是什么?
is, is not 对比的是两个变量的内存地址
==, != 对比的是两个变量的值比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
Q4:python 中包含哪些数据类型?这些数据类型之间如何转换?
int整型
转换为整型 int(x, base=10)
转换为字符串 str(object='')
转换为浮点型 float(x)
位运算
1、原码、反码和补码
原码:就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.
反码:数值存储的一种,正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
补码:正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反 最后+1. (即在反码的基础上+1)
2、按位非 *** 作 ~
对一个表达式执行按位“非”(取反)。
~1=0
~0=1
按位与 *** 作 &
1 & 1 = 1
1 & 0 = 0
按位或 *** 作 |
1 | 1 = 1
1 | 0 = 1
按位异或 *** 作 ^
1 ^ 1 = 0
1 ^ 0 = 1
按位左移 *** 作 <<
num << i 将num的二进制表示向左移动i位所得的值
00 00 10 11 -> 11
11 << 3---
01 01 10 00 -> 88
按位右移 *** 作 >>
num >> i 将num的二进制表示向右移动i位所得的值
00 00 10 11 -> 11
11 >> 2
---
00 00 00 10 -> 2
利用位运算实现快速计算
通过 <<,>> 快速计算2的倍数问题
n<< 1 -> 计算 n*2
n >> 1 -> 计算 n/2,负奇数的运算不可用
n << m -> 计算 n*(2^m),即乘以 2 的 m 次方
n >> m ->
计算 n/(2^m),即除以 2 的 m 次方1 << n -> 2^n
利用位运算实现整数集合
一个数的二进制表示可以看作是一个集合(0 表示不在集合中,1 表示在集合中)
结论:
Python中bin一个负数(十进制表示),输出的是它的原码的二进制表示加上个负号,巨坑。
Python中的整型是补码形式存储的。
Python中整型是不限制长度的不会超范围溢出。
练习题:
leetcode 习题 136. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。尝试使用位运算解决此题。
题目说明:
class Solution: def singleNumber(self, nums: list[int]) -> int: if not nums: return 0 for index in nums: if nums.count(index)== 1: return index
学习问题与解答
=不是等于号,==是交互式,用来判断对错的吗?
位运算的理解还有待深入思考
学习思考与总结
学习位运算还是比较吃力,并且同一种模式有多种代码的表达方式,所以还需多学习、多练习。
初次学习,多多担待
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)