python容器数据类型
1 列表
使用率最多的容器数据类型,类型是list,列表数据有序
创建:[1,2,3]
转换:list("abc")
修改:
#增加元素 a=[] a.append(1) a.append(2) a.extend([3,4,5]) #把一组数据,加入列表 a.insert(1,'张三') #把一个数据,插入到指定的位置 #修改元素 a[1]=8 #删除元素 a.pop() #把最右侧的数据移除 a.remove("张三") #移除指定数据 a.pop(2) #移除指定下标的数据 a.clear() #移除全部数据 #排序 a.sort() #升序排序 a.sort(key=sort) #可以自定义排序算法
使用列表
索引:返回1个内容,如果越界就报错
切片:返回多个内容,如果越界不报错,返回list
2.元组
元组可以理解为不可变的有序列表,数据类型:tuple
创建:(1,2,3)
转换:tuple([3,2,1])
使用元组:索引,切片
3.字典
是key-value映射结构(k-v结构),有序,数据类型:dict
创建:a={"name":"张三","age":18}
转换 b=dict(name="李四",age=19)
相关操作:
#添加数据 a["tel"]="13110010002" #修改数据 a["name"]=“王五” a.update(name="赵四") #删除数据 del a["age"] a.pop("age") a.clear() #删除所有数据 a.keys() #获取所有的key a.values() #获取所有的value a.item() #获取所有的键值对 a={} print{type(a)} #类型是字典 dict
4.集合
集合可以理解为KV一致的字典,集合自带去重效果,无序,数据类型 set
创建:a={1,2,3,4,5,"a"}
转换:set([1,2,3,4])
添加:a.add(7)
删除: a.pop() 无序删除 a.remove(2)
4.2 可哈希性
是不是所有内容都可以放入集合?
- 可哈希的内容才能放入集合
是不是所有的内容都可以作为字典的key?
- 可哈希的内容才能作为字典的key
能放入集合,能作为字典的key就是可哈希性
可哈希:比如字典、整数、元组等不可变数据类型
不可哈希:列表,字典,集合等可变数据类型
如何判断一个数据是否可哈希?
- print(hash("asd"))
5. 面试题:
5.1.列表和元组的异同
相同点:
1.都是有序的
2.里面的元素可以重复
3.里面的元素可以是多种基本数据类型(数字(int,float),字符串)
不同点:
1.列表用[],元组用()
2.列表是可变的可修改,元组不可变不可修改
3.列表不可hash,元组可hash
4.=操作时,列表修改同一份数据,会对原数据造成影响,元组会创建一个副本对原数据无影响
5.2 给一值为数字的字典c={"a":7,"b":2,"c":9,"d":3,"e":1},打印出所有的值,值按升序排列
c={"a":7,"b":2,"c":9,"d":3,"e":1} d=c.values() e=list(d) e.sort() print(f"升序e={e}") e.sort(reverse=True) print(f"降序e={e}")
5.3 有字符串 a="abbaccadd",编写代码计算每个字符出现的次数
答案1:
a1="abbccadcdbdcdd" b1=set(a1) for i in b1: count = 0 word=i for j in a1: if word ==j: count+=1 print(f"{word}出现了{count}次")
答案2:
a1="abbccadcdbdcdd" dict1={} for i in a1: #dict1[i]=a1.count(i) dict1[i]=dict1.get(i,0)+1 print(dict1) for key in dict1: print(f"{key}:{dict1[key]}")
5.4 有元组 t=(1,2,3,),编写代码,使其变为(1,2,3,4,5,6)
t=(1,2,3,) t=list(t) t.extend([4,5,6]) t=tuple(t) print(t)