目录
标识符(如变量名等)
- 第一个字符必须是字母或下划线 _
- 标识符由字母、数字、下划线组成
- 大小写敏感
Python保留字/关键字
不能用作任何标识符名称 ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
多层缩进
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数
【区别】is和== type和isinstance
is 和 ==
- is用于判断两个变量是否引用同一个内存地址(是否引用同一个对象)
- ==用于判断引用变量的值是否相等
type(变量名) 和 isinstance(变量名, 类型) 查询变量类型
- type() 主要用于判断未知类型,其认为子类不是一种父类类型【子类 ≠ 父类】
- isinstance() 主要用于判断A类是否继承于B类,认为子类也是一种父类类型【子类 == 父类】
标准数据类型(6个)
- Number数字、String字符串、List列表、Tuple元组、Set集合、Dictionary字典
- Python中的每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
- 允许同时为多个变量赋值:a = b = c = 1 a, b, c = 1, 2, "xxx"
Number数字类型
int整数、bool布尔、float浮点数、complex复数
数值的除法:/返回一个浮点数,//返回一个整数
2进制的数以0b开头 输出时:bin()
8进制的数以0o开头 输出时:oct()
16进制的数以0x开头 输出时:hex()
字符串截取:str[头 : 尾 : 步长] 注意头尾是左闭右开
Python推倒式
- 列表推倒式:[ 表达式 for 变量 in 列表 if 条件 ]
- [ 结果值1 if 判断条件 else 结果2 for 变量名 in 原列表 ]
- 字典推倒式:{ key_expr : value_expr for value in collection if condition }
- 集合推倒式:{ expression for item in Sequence if conditional }
- 元组推倒式:( expression for item in Sequence if conditional )
Python运算符优先级
优先级上面最高,向下依次递减
( ) | 括号 |
x[ ] x.attribute | 读取,切片,调用,属性引用 |
await x | await表达式 |
** | 乘方 |
+x -x ~x | 正,负,按位非 NOT |
* @ / // % | 乘,矩阵乘,除,整除,取余 |
+ - | 加,减 |
<< >> | 移位 |
& | 按位与 AND |
^ | 按位异或 XOR |
| | 按位或 OR |
in, not in, is, is not, < <= > >= != = | 比较运算,包括成员/标识号检测 |
not x | 逻辑非 NOT |
and | 逻辑与 AND |
or | 逻辑或 OR |
if -- else | 条件表达式 |
lambda | lambda表达式 |
: = | 赋值表达式 |
二进制数中1的个数(练习题)
推荐使用第三种方法:n不为0时,计数器+1,n = (n-1) & n
class Solution:
# bin函数:bin返回一个整数的二进制字符串,一0b开头
# 如果一个数为负数,那么2**32 + n 然后在用bin返回的就是它的补码形式(补码 + 源码 = 2**32)
def NumberOf1_1(self, n):
'''法一:使用bin和count函数解决'''
if n >= 0:
return bin(n).count('1')
else:
return bin(2**32 + n).count('1')
def NumberOf1_2(self, n):
'''法二:使用位运算解决'''
count = 0
while n:
if n & 1 == 1: # 与(&)1,即可知道n的最后一位是否为1
count += 1
n >> 1
return count
def NumberOf1_3(self, n):
'''法三:巧妙使用位运算'''
count = 0
if n < 0:
n = n & 0xffffffff # 这一步是为了让n显示32个1,否则默认按4位显示
while n:
count += 1
n = (n - 1) & n # 不断的撤掉最后一位有1的部分
return count