python基础0221
常量
字面常亮是指单独出现的数字、字符串等,占用解释器里的一块内存地址,通常不会单独出现。
如果想指定一些不被特殊处理的字符串,例如正则表达式,转义序列等,就需要通过在字符串前面附加
r
或者R
来指定自然字符串
变量
变量是指解释器中一段内存的名称,python 中变量都是引用, 引用对象存储在 堆空间 中。
数据类型
Python强类型的(动态)语言。强类型是指明确对象类型的语言,动态是指变量可重新复制为别的数据类型。
数据类型是用来约束数据的。数据类型分为原始类型和复合类型,原始类型是指 int
、float
、byte
等基础类型,复合类型是指由其他原始类型组合起来的类型.例如list
、dict
等。
运算符
- 算术运算符
+ - * / % ** //
(取整除)
&
按位与
|
按位或
^
按位异或
~
按位取反 ~x = -(x+1)
正数的补码和反码都是其本身,但是前面加上正数的符号位"0"
负数的符号位是"1"
负数的补码是:符号位不变,其余各位求反,末位加1
负数的反码是:符号位不变,其余各位求反
二进制数在内存中是以补码的形式存放的
60的按位取反计算:
计算60的 **补码** 和 **反码**
原码 补码 反码
十进制 60
二进制 111100 0111100 0111100
取反-->`取反操作是对补码进行取反`
取反后
补码 1000011
原码 1111101
与 运算--> 11才为1
或 运算--> 00才为0
异或 运算--> 相同为0,不同为1
- 位运算符
<<
左移变大
>>
右移变小
- 比较运算符
= =! < > >= <=
- 逻辑运算符(布尔类型)
and or not
短路功能
类似shell中得 -- && -- || --
- 其他运算符
= 赋值
in 成员运算符
not in
is 身份运算符
is not
is None
常用来判断是不是空,未赋值。
== 等值判断和 is 身份判断是有区别的
a=[1,2,3]
b=[1,2,3]
id(a)4563826248
id(b)4563487752
a==b
True
aisb
False
表达式
表达式是指常量、变量和赋值运算符之外的运算符的组合,表达式是可以求值的。
a if a > 0 else 0
-
优先级
-
一元运算符高于二元运算符
一元指一个变量或常量 包括 not
二元指两个变量或常量 + -
-
数值运算高于逻辑运算
-
算术运算高于位运算
-
乘除高于加减
括号中的总是作为一个整体参与外部运算,拿不准运算顺序的时候,最好让优先级高的加上括号。
程序结构
对于绝大多数语言来说只有三种结构:顺序、分支和循环。
- 顺序结构
按照书写顺序从上到下依次执行。
- 分支结构
if 语句:以:
开始一个块,使用缩进标示块。
在Python中 None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于False
if CONDITION:
suite1
elif CONDITION:
suite2
else:
suite3
- 循环结构
条件循环 while,遍历循环 for,python中不建议使用迭代循环。
迭代循环体不要修改迭代器,会造成死循环等不可控错误。
break 语句可以跳出当前循环体
continue 语句可以跳过循环体内后续语句直接开始下次循环
for i in range(10):
print(i)
if i<5:
break
else:
print("OK")
else 执行条件循环体完整循环,没有经过break跳出。
内置容器
- 列表
最常见的线性数据结构,一系列元素的有序组合,可变,不可hash。
定义列表
list=[]
list=list()
list=[1,2,3]
操作方法
增加
l.append(a)
扩展
l.extend([6,7,8])
插入
l.insert(index,item)
删除第一个遇到的
l.remove(item)
抛出索引位置项
l.pop(index)
清空列表
l.clear()
反转列表
l.reverse()
排列列表
l.sort()实现的不太好
排序并反转
l.sort(reverse=True)
item个数
l.count(item)
查找索引
l.index(item,[index])
深拷贝-->生成一个新的对象而不是源对象的引用(id不同)
l.copy()
下标操作和切片
list[x]
list[x] = Var
list[b:e]
list[b:e:s]-->开始:结束:步长
list[:]
list[::-1]反转并生成一个新的列表
- 元组
tuple和list大多数地方类似,tuple是不可变结构,因此可hash。
定义元组
t=()空元组
t=tuple(list[])
PACKING 和 UNPACKING 解包和封包
x, y = [1,2] 可以列表
x, y = (1,2) 可以元组
x, *y = (1,2,3,4)
x, *_,y = (1,2,3,4)
x, (y,z) = (1,(2,3))
x,y=y,x 交换
- 集合
集合的含义和数学上集合的含义相同,集合不是线性结构,集合中得元素是唯一的,集合元素是可hash的。
初始化
s = set()
s = {1,2,3} 不能为空,空值默认为字典
操作方法
s.add(item)增加元素
s.remove(item)删除元素
s.discard(item)删除元素不报错
s1.union(s2)并集
s1.intersection(s2)交集
s1.difference(s2)差集
s1.symmetric_difference(s2)只属于s1+只属于s2的元素
s1.issuperset(s2)s1是否s2的超集
s2.issubset(s1)s2是否s1的子集
s1.isdisjoint(s2)s1是否与s2不相交
- 字典
初始化
d={}
d=dict()
d={key1:'var1',key2:'var2'}
查询赋值
d[key1]
d[key1] = var3
d.keys()返回键作为列表元素
d.values()返回值作为列表元素
d.items()返回键值对作为列表元素
d.pop(key,[var])返回对应值不存在键则返回var值
d.popitem()随机返回一个键值对构成一个元组