Python学习之路第四天 数据类型II
列表定义
定义 list
li = [1,2,3] 每个元素逗号隔开 -- 常用
list("abc") # 迭代定义
列表是一个容器 -- 任意类型
列表是有序 -- 索引 切片 步长
列表是可变 -- 增删改查
列表操作
增
append 追加
insert 插入 第一个参数 索引 第二个参数 内容
extend 迭代添加 for循环
两个列表相加 就会产生一个新的列表 列表合并
删
pop() 弹出,默认删除最后一个 有返回值 返回的是被删除的元素,可以指定通过索引删除元素
remove() 通过元素的名字删除 从左向右删除,有同名的删除左侧的第一个
del 表名 删除整个列表
del 表名[索引] 删除指定元素 也可以定义切片和步长删除区间内容
clear() 清空 把容器的内容全部删除
改
li[1] = "你好"
切片:
li[1:5] = "qwertyuio"
li[1:5] = "1"
li[1:5] = []
切片的时候可以多,可以少,可以指定空格
步长:
li[1:5:2] = "你好" 迭代出来
查
索引,切片,步长,for循环可直接查看
补充
(可以加可以乘,可变的,不可变的公用)
- list.count("1"):统计出现次数
- list.index("1"):查看索引
- list.reverse( ):反转
- list.sort( ):排序,升序
- list.sort(reverse=True):排序,降序
- li = list("123456"):定义的方式
元祖
定义 tuple
tu = (1,2,3)或tu = (1,)都是元祖
tu = (1) 这个不是元祖 不加逗号括号中的元素是其本身
元祖的操作
元祖是有序的 他也有索引,切片,步长(和列表一样)
但是元祖是不可变数据类型
补充
(可以加可以乘,可变不可变的公用)
- tuple.count("3"):统计次数
- tuple.index("a"):查看下标
字典
定义 dict
dict -- {"key":'value',"a":1}
字典也是一个容器 -- 任意类型
字典是无序的(python3.6开始变得默认有序,创建顺序)
字典的键 -- 可哈希(不可变),唯一
字典的值 -- 任意
字典的操作
增:
dic['键'] = '值'
dic.setdefault('键',''值) -- 间不存在就添加,存在就不添加
删:
pop('键')
del dic['键']
dic clear() 清空
改:
dic['键'] = '值'
dic.update({'a':1,'b':1}) -- update(里边的级别高),会被前面的中相同的key对应的值覆盖,没有就会添加
查:
get('键','指定返回的内容') -- 不存在返回的是None,可以设置返回值
dic['键'] -- 不存在就会报错
dic.setdefault['键'] -- 查询
其他方法:
for i in dic:
print(i) -- 循环出来的是字典的键for i in dic.keys()这两个是一样的都是键,但是dic.keys() -- 返回的是一个高仿列表 -- 没有索引
for i in dic.values():
print(i) -- 返回的是一个高仿列表 -- 没有索引 循环出来的是值
for i in dic.items():
print(i) -- 返回的是一个高仿列表,列表里存放的是元组类型,元组第一个是键,第二个元素是值
enumerate() -- 枚举 给你要迭代对象,加一个序号 默认是从0开始,可以自己指定
补充
-
dic = dict(k=1,k1=2)定义方式
-
dict.popitiem( ):随机删除,python3.6默认删除最后一个键值对
-
dict.fromkeys("123",1):批量创建字典,第一个参数是可迭代对象, 第二个参数是每个键对应的值,用的同一个内存(可变的数据类型)
集合
集合定义
se = {1,2,3}
特点:天然去重
增加
- s.update("3456"):迭代添加
- s.add("对对")
删除
- s.pop( ):删除第一个位置(可理解随机删除)有返回值
- s.remove("345"):通过元素进行删除
- s.clear( ):清空---返回 set()
- del s:删除整个集合
修改:
先删,再加
查:
for i in se:
print(i)
其他操作:
& 交集,|并集,-差集,^反交集(对称差集),>父集(超集),<子集,frozenset() 冻结集合.
s = set("1234"):定义方式,迭代添加
Bool
True 和 False
True: 1,2>1等等
False: 0,'',{},[],None,set(),1=2等等
数据类型分类
有序无序
- 有序:str,int,bool,list,tuple
- 无序:dict,set
可变不可变
- 可变:list,dict,set
- 不可变:str,int,bool,tuple
取值方式
- 直接取值:int,bool,set
- 索引取值:list,tuple,str
- 通过键取值:dict
数据类型转换
1.字符串转数字的时候必须全都是十进制数
2.字符串转列表: str - list:用split转换,
3.列表转字符串: list - str:用join,可迭代的对象中不能出现数字
s = ["a","b","c","d","e"]
s0 = "".join(s)
4.列表转元祖: list - tuple:直接转换
5.字典不能转换: 字典转成字符串直接转
数据类型转换的坑
问题:列表 循环删除索引的时候,要倒序删除 否则会报错,或者结果不正确.
解决:倒序删除,创建一个新的列表,存放要删除的元素,最后用for新列表删除原列表的元素
循环添加列表元素的时候,会形成死循环
字典再循环的时候不能改变字典的大小
先定义一个列表 循环列表列表删除字典
编码和解码
encode("编码集") 编码
decode("编码集") 解码
用什么编码集编码,就用什么编码集解码

浙公网安备 33010602011771号