数据类型
Python的数据类型大致可以分为两种:
- Python自带内置数据类型
- 第三方扩展包中的数据类型
内置数据类型
- 可变数据类型:list(列表)、dic(字典)、set(集合)
- 不可变数据类型:int、float、complex(复数)、bool(布尔)、tuple(元组)、str(字符串)、forzenset(不变集合)
- 序列类型:元组、列表、字符串
查看数据类型:type()
判断数据类型:isinstance(参数,类型)
一些特殊的数据类型
- None类型
必须用print()函数才能显示出来 - 进制:
int(’ xx ',base = x )意为将X进制下的数xx表示为10进制
单引号和双引号效果相同
更多进制转换可参考:进制转换
- 科学计数法:
10e10 #10的10次方
序列
序列(sequence)是有序的元素集合,既列表、元组和字符串等元素之间有顺序关系的数据类型的统称
(字典不属于序列)
特点:
-
支持索引
-
支持切片
[start : stop : step]
含头不含尾,且三个参数都可以省略 -
支持迭代
-
支持拆包赋值
-
支持重复运算符 *
-
设有专用函数
常用函数: -
计算长度
len()
-
排序
sorted()
默认从小到大排,加上reverse = Ture
就是从大到小,不会改变序列本身
-
逆序
reversed()
reversed()函数返回的是迭代器,需要转换后查看 -
跟踪下标
enumerate()
函数返回的是迭代器,需要转换后查看 -
同步计算
zip()
函数返回的是迭代器,需要转换后查看
列表 [ ]
列表(list),标志性符号为方括号[ ] 一种可变的有序容器,每个元素都有自己的下标
列表的下标有两种表示方式—— 正数法(第一个元素为0,最后一个为n-1) 和 负数法(第一个元素为-n,最后一个元素为-1)
反向遍历的方法:
- 负数下标法
[ : : -1]
-
内置函数reversed()
reversed()返回的是迭代器,不会改变列表本身
-
列表方法reverse()
reverse()改变了列表本身
列表推导式:[x for x in ... (if ...)]
-
for之前:将要重复计算的公式
-
for 和 in 之间:从迭代器中提取的循环变量
-
in 之后:可迭代的对象或迭代器
常用运算
-
排序
内置函数:sorted()
列表方法sort()
改变了原列表 -
合并
.append()
平等追加,既将()内的元素直接放到列表中
使用运算符+ -
追加
.extend()
以成员身份追加,既加入的是单个的元素
-
删除
根据下标:.pop()
根据内容:.remove()
使用语句del
删除重复元素:
使用列表推导式:[x for x in list if 条件]
使用函数:filter()
使用函数重复过滤后再删除:set()
-
插入
.insert()
insert(下标,插入的数值)
元组 ( )
元组(tuple),标志性符号为圆括号( ) 一种 不可变 的有序容器,每个元素有位置上的先后顺序
元组在Python中非常常见,具体表现为 凡是用逗号,
隔开的都是元组,输出时会自动的补充上圆括号,这也意味着元组定义时可以不加括号,只要有逗号就行
常用运算
-
拆包赋值
-
频次统计:
.count()
-
变量值对换:
x , y = y , x
这一步操作实际上是通过元组来完成的 -
支持所有序列操作
字符串 " "
字符串,用单 / 双引号 (三引号原格式输出也可以),是 不可变 对象
转义字符
Python中有转义字符,当字符串中本身就有 \ 时,有两种解决方法:
- 用“ \ ”来表示和转义“ \ ”
- 在字符串前加字母r,代表原始字符串
- 注意,如果是用Jupyter notebook的直接输出x而不是通过print()函数的话,不会对转义字符做转义
常用操作
-
合并
使用函数.join()
使用运算符+
-
计算字符的Unicode编码
内置函数ord()
解码chr()
-
去掉左右空白符(包括空格,换行符)
.strip()
-
大小写转换
大写转小写:lower()
小写转大写:upper()
-
支持所有序列操作
集合 { }
集合(set),标志性符号为花括号{ } ,是一种可变的无序容器
特点:
- 确定性
属于不属于关系明确 - 无序性
不支持下标 - 互异性
常用来去重 - 支持集合运算
交并差等|#合集 & #交集 < #子集 - #差集 ^ #对称差分
判断是否为子集:.issubset()
判断是否为父集:.issuperset()
- 属于可变对象
添加.add()
删除remove()
字典 { }
字典,是一种可变的无序容器,其中的每个值(value)都有自己的键(key)是一种映射结构,标志性符号为花括号{ }
定义时的注意事项:
-
要用{ }括起
-
key和 value之间要用冒号: 分开
-
不同key/value 之间要用逗号, 分开
需要知道: -
如果一个key对应了两个value,输出时后一个覆盖前者,既显示后一个value值
-
当key为字符串时,需要用引号括起来
-
key不能为不可哈希对象,即可变的数据结构 (字典dict,列表list,集合set)
关于哈希可参考 -
实例
有如下字典,按照要求实现每一个功能。
dict = {"k1":"v1","k2":"v2","k3":"v3"}
(1)请循环遍历出所有的key和value。
(2)请在字典中增加一个键值对,“k4”:“v4”,输出添加后的字典。
(3)修改k1的值为v5,输出修改后的字典
dict = {"k1":"v1","k2":"v2","k3":"v3"}
for x in dict:
print(x,dict[x])
dict["k4"] = "v4"
print("添加后的字典:",dict)
dict["k1"] = "v5"
print("修改后的字典:",dict)
迭代器和生成器
迭代器(iterator):可以被内置函数next()调用,并不断返回下一个值的对象
生成器(generator):生成一个新的迭代器的函数
生成器特点
- 定义使用
yeild
而不是return
- 遵循惰性计算模式,不会立即返回计算结果,只有调用其中的元素时才运行
辨析:可迭代对象与迭代器
可迭代对象(iterator object):可以直接作用于循环语句的对象
- 可迭代对象不一定是迭代器
判断方法:用内置函数 isinstance() 和 collections模块
from collections import iterable
isinstance(对象名,iterator)
- 内置函数
iter()
可以将 可迭代对象 转换为 迭代器 - 能够接收 可迭代对象 的函数都可以接收 迭代器