python容器数据类型
1 列表
使用率最多的容器数据类型,类型是list,列表数据有序
创建:[1,2,3]
转换:list("abc")
- 增
- append(append(1))
- extend(extend([1,2,3]))
- insert(1,999)
- 删
- pop(移除最后一个元素)
- remove('a')
- clear()
- 改
- sort() 排序
- reverse() 反转
- 查
- copy()
- count('b') 统计元素出现的个数
- index('c') 查询元素出现的位置
修改:
#增加元素
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])
使用元组:索引,切片
- 查
- count('b') 统计元素出现的个数
- index('c') 查询元素出现的位置
3.字典
是key-value映射结构(k-v结构),有序,数据类型:dict
创建:a={"name":"张三","age":18}
转换 b=dict(name="李四",age=19)
- 增
- a.setdefault("c",3):为指定的key设定默认值
- 删
- a.clear()
- a.pop("a"):删除指定的键
- 改
- a.update({"a":3,"c":666}):合并另外一个字典
- 查
- a.copy():复制整个字典
- a.get("a"):获取指定的键值
- a.keys():获取所有的键
- a.values():获取所有的值
- a.items():获取所有的键值对
- 创建新字典
- {}.formkeys([1,2,3],"xxx")
相关操作:
#添加数据
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)
浙公网安备 33010602011771号