1 变量
- 对象有类型,变量无类型,变量只是对象的一个标签。
- 每个变量中存储一个值----与变量相关的信息。
- 程序中可随时修改变量的值,python始终记录最新值。
1.1 变量的命名和使用
- 变量名只包含字母、数字、下划线,可以字母或下划线开头,不能以数字开头。
- 变量名不能包含空格,可使用下划线分割其中的单词。
- python关键字和函数名不能用作变量名。
- 变量名应简短且具有描述性。
1.2 避免命名错误
程序存在错误,解释器会提供一个traceback,它是一个记录,指出程序可能在哪个地方出错。
名称错误通常两种情况:使用前未赋值,输入变量名时拼写不正确。
2 python数据类型
python中标准数据类型6种:Number、String、List、Tuple、Dict、Set
按照可变不可变分类:不可变类型:数字、字符串、元组 可变类型:列表、字典、集合
序列类型:字符串、列表、元组
序列
2.1 字符串 str()(不可变)
- 表示:单引号、双引号、反斜杠(转义)、原始字符串(r/R)
- 相关函数:repr() input() chr() ord() len()
- 操作:索引、分片、加、乘、成员检查(in/not in)、长度、最大值、最小值
- 格式化输出:
- 占位符:print("Hello, %s.My name is %s." %("fengdi", "yuxi")) %s为占位
- .format():{index}为占位符
print("hello {}, my name is {}".format("fengdi", "yuxi"))
print("hello {0}, my name is {1}".format("fengdi", "yuxi"))
print("hello {name1}, my name is {name2}".format(name1="fengdi", name2="yuxi"))
-
接受输入:
- input() :从标准输入读取一个字符串
- eval(input()) :原始输入为何类型,结果即为何类型(接受原始输入)
-
常用方法:
- split():返回字符串列表
- strip():去掉两端空格 (.lstrip() .rstrip())
- upper():全部大写 (.lower() .title() .isupper() .islower())
- join():.split()的反方法。S.join(a) S为分隔符
- find():返回子串的最小索引,未找到返回-1
- index():同上,未找到抛出异常
- replace(old, new):替换字符串
- count():统计子串出现的次数
2.2 数字 number(不可变)
- 分类:int float complex Bool
- 运算:+ - * / // % **
注:对于除法而言,只要有一个为浮点数,结果为浮点数。
- 模块:math() cmath()
- 函数:id() type() dir() help() pow() sqrt() abs() round() divmod() floor()
id():对象的内存地址 help():显示对象的帮助信息 pow():乘方运算
type():对象的类型 sqrt():math模块提供,开方运算 abs():绝对值
dir():对象的属性 floor():返回下舍整数
2.3 列表 list()(可变)
表示:[] 里面可为任意类型 list()函数:list(iterable)
-
操作:索引、分片、加、乘、成员检查、长度、最大值、最小值、遍历
改变元素:重新赋值、 删除元素:del语句
-
常用方法:
- append():末尾添加元素
- extend():扩展列表,通过iterable
- insert():根据位置插入元素
- count():统计元素出现次数
- index():返回某元素的第一个索引位置
- pop():删除指定位置元素,默认删除末尾一个,有返回值即删除的元素
- remove():移除某个元素的第一个匹配值
- clear():清空列表元素
- copy():复制列表元素,生成一个新对象,内存地址不同即并不指向同一个对象。也可使用切片的方法,a[:],但不能直接赋值,直接赋值为同一对象(引用)
- sort():排序,原地修改,默认从小到大,设置reverse=True相反
- sorted():排序,修改副本,自身不变
- reverse():反转列表
- reversed():反转
作为堆栈使用:后进先出---> append()和pop()方法,作为队列使用,先进先出
range():该函数常用来生成数字列表,如list(range(1, 10, 2))
列表解析:从序列中创建列表,表达式后可跟多个if或for 子句来,来满足情况
mylist = [x * x for x in range(10)]
mylist = [x * x for x in range(10) if _____ ] # 后跟if用来限制条件
mylist = [x * y for x in range(10) for y in range(10)] # 双重for语句
2.4 元组 tuple() 不可变 有序
- 表示:圆括号()表示,可为任意类型(只有一个元素需要加逗号)
- 操作:索引、分片、加、乘、长度、成员检查、最大值、最小值、遍历
- 常用方法:count()、index()
2.5 字典 dict() 无序性
- 表示:花括号{}表示,空字典:a={} 键值对形式
- 键不可重复且为不可变类型(数字 字符串 元组),值可重复(可为python任意对象)
dict1 = {"name":"fengdi", "age":23, "language":"python" }
a = dict([("name", "fengdi"), ("age", 25)])
b = dict(name="fengdi", age=23) # 关键字参数构造
-
基本操作:
- len():字典长度(键值对数量)
- d[key]:获取某个键对应的值
- d[key]=value:重新赋值,不存在则添加该键值对
- del d[key]:删除某键值对
- key in d:成员检查
-
常用方法:
- copy:内存中产生一个新对象,地址不同(浅拷贝)整体来说
- deepcopy:import copy copy.deepcopy()都不为同一对象
- clear:清空字典元素
- setdefault:查找某键对应的值,键不存在可设定默认值,未设定,默认值为None,并添加到字典
- get:同上,不存在则不添加到字
- items:返回视图,键值对组成的列表形式,可用来遍历
- keys:同上,键组成的列表形式
- values:同上,值组成的列表形式
- pop:删除指定的键对应的值并返回,若不存在,返回指定值,否则抛出错误
- pipitem:随机删除键值对,并返回tuple,字典为空,抛出错误
- update:从另一个字典或可迭代对象更新字典
2.6 集合 set() 元素不可重复,无序
表示:花括号{}表示, set(variable):set()函数 (空集合:set())
可变,即unhashable,集合里面的元素应该可哈希,即不可变类型
-
常用方法:
- add:添加元素
- pop:随机删除元素并返回,集合为空抛出异常
- update:利用其它集合或可迭代对象修改集合
- remove:删除指定元素,元素不存在,抛出异常
- discard:删除指定元素,元素不存在,不做任何事
- clear:清空集合元素
不可变集合:a=frozenset() 元素不可修改
-
集合运算:
- 元素与集合的关系:in not in
- 集合与集合:子集:<或a.issubset(b)
- 超集:>或a.issuperset(b)
- 并集:|或a.union(b)
- 交集:&或a.intersection(b)
- 差集:-或a.difference(b)