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)

 

posted @ 2023-06-05 16:36  万溪汇海  阅读(22)  评论(0编辑  收藏  举报