python数据类型

1 变量

  • 对象有类型,变量无类型,变量只是对象的一个标签。
  • 每个变量中存储一个值----与变量相关的信息。
  • 程序中可随时修改变量的值,python始终记录最新值。
1.1 变量的命名和使用
  • 变量名只包含字母、数字、下划线,可以字母或下划线开头,不能以数字开头。
  • 变量名不能包含空格,可使用下划线分割其中的单词。
  • python关键字和函数名不能用作变量名。
  • 变量名应简短且具有描述性。
1.2 避免命名错误

程序存在错误,解释器会提供一个traceback,它是一个记录,指出程序可能在哪个地方出错。

名称错误通常两种情况:使用前未赋值,输入变量名时拼写不正确。

2 python数据类型

python中标准数据类型6种:Number、String、List、Tuple、Dict、Set

按照可变不可变分类:不可变类型:数字、字符串、元组 可变类型:列表、字典、集合

序列类型:字符串、列表、元组

序列

img
2.1 字符串 str()(不可变)
  • 表示:单引号、双引号、反斜杠(转义)、原始字符串(r/R)
  • 相关函数:repr() input() chr() ord() len()
  • 操作:索引、分片、加、乘、成员检查(in/not in)、长度、最大值、最小值
  • 格式化输出:
img
img
  • 占位符: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)

推荐阅读更多精彩内容