元组
1、定义:()
2、类型:tuple
3、元组是不可变的(定义好之后不能够直接去修改元组中的元素)
a=() #定义一个空元组
print(type(a)) #打印元组类型
b=(1,2,3) #定义一个空元组
print(type(b)) #打印元组类型
c=(1,) #定义一个空元组
print(type(c)) #打印元组类型
注意:只有一个元素的时候后面要加要加一个逗号!!!
如果不加逗号,原始元素是什么类型它就是什么类型。
4、元组中常见的操作
元组转换为列表
a=(1,2,3,4,5,6) #定义一个空元组
print(type(a)) # 打印元组类型
a1=list(a) #通过list将元组转换为列表
print(type(a1)) # 打印列表类型
a1.append("hello") #在列表末尾添加元素
print(a1) #[1, 2, 3, 4, 5, 6, 'hello'] 打印列表元素
列表转换为元组
a2=tuple(a1) #通过tuple将列表转换为元组
print(type(a2)) # 打印元组类型
print(a2) #(1, 2, 3, 4, 5, 6, 'hello')打印元组元素
数据类型转换
字符串转换列表
a="123" #定义一个字符串
a1=list(a) ##通过list将字符串转换为列表
print(type(a1)) # 打印列表类型
print(a1) #['1', '2', '3'] 打印列表元素
字符串转换为元组
a2=tuple(a) #通过tuple将字符串转换为元组
print(type(a2)) #打印元组类型
print(a2) #('1', '2', '3')打印元组元素
元组转换为字符串
a=(1,2,3) #定义一个元组
print(type(a)) #打印元组类型
a1=str(a) #通过str将元组转换为字符串
print(type(a1)) #打印字符串类型
python中列表和元组的区别:(面试)
1、类型不同:列表是list,元组是tuple
2、定义不同:列表是通过中括号定义,元组是通过小括号定义
3、列表定义后是可以随意的增删改(元素不受保护)
元组定义后是不能随意进行增删改(元素受到保护)
4、元组相对更安全(因为元组定义后不能直接修改,所以比列表安全)
想给元组中进行增删改如何实现?(面试)
可以把元组先转换成其他数据类型,再调用其他类型中的方法来实现
元组也是支持切片操作的
a=(1,2,3,4,5,6,"hello") #定义一个元组
#print(a[6]) #hello 通过索引值取对应元素值
print(a[1:4:2]) #(2, 4) 通过切片取对应元素值
字典
1、定义:{}大括号,也称为花括号
2、键值对:键是唯一,值不唯一
键值对用冒号分割,‘name’:"zhangsan"(非整型数据要加引号)
存在多个键值对用逗号进行分割
3、类型:dict
a={} #定义一个空字典
print(type(a)) # 打印字典类型
a={'name':"zhangsan"} #定义一个字典,里面有一个键值对
print(a) #{'name': 'zhangsan'} 打印
a={'name':""} #定义一个字典,只有键没有值
print(a)
(注意,值为空时也要打引号!!1否则异常)
a={'name':"zhangsan",'name':123} #定义一个字典,多个键值对之间用逗号隔开,整型可以不加引号
a['scroe']=100#设置一个键值对
print(a) #{'name': 123, 'scroe': 100}
取出字典中的键和值
键:keys 值:values
d2 = {'name':"zhangsan","age":18}
key =d2.keys()#取出当前字典中的所有键
print(key)#dict_keys(['name', 'age'])
val =d2.values()#取出当前字典中的所有值
print(val)#dict_values(['zhangsan', 18])
获取指定键的值
d2 = {'name':"zhangsan","age":18}
d3=d2["name"]#获取name这个键对应的值
print(d3)#zhangsan
setdefault 设置键值对
注意:此方法执行后会进行判断,如果发现字典中没有此键则会进行添加键值对;
如果发现字典中有此键则不会执行替换
d2 = {'name':"zhangsan","age":18}
d2.setdefault("scroe",100)#设置键值对
print(d2)#{'name': 'zhangsan', 'age': 18, 'scroe': 100}
d2.setdefault('age',20)#设置已存在的键值
print(d2)#{'name': 'zhangsan', 'age': 18, 'scroe': 100}
删除字典中的键值
d2 = {'name':"zhangsan","age":18}
del d2#删除整个字典
print(d2)#抛异常提示字典不存在
d2 = {'name':"zhangsan","age":18}
del d2["name"]#删除键和对应键的值
print(d2)#{'age': 18}
遍历字典
for...in...
st="helloword"
for i in st:
print(i,st.count(i))
d2["age"]=20#如果原字典中有此键,则会执行替换
print(d2)#{'name': 'zhangsan', 'age': 20, 'scroe': 100}
pop(key)函数,删除指定键并返回删除的值
a={'name':"zhangsan",'age':123} #定义一个字典
b=a.pop('name') #删除name 这个键,并返回对应的值
print(b) #zhangsan
print(a.pop('name')) #zhangsan
clear()清空字典所有项
a={'name':"zhangsan",'age':123} #定义一个字典
a.clear() #把这个字典中所有的值清空,返回一个空字典
print(a) #{}
get()方法获取对应键的值
#当获取的键不存在时,返回none
d2 = {'name':"zhangsan","age":18}
d3=d2.get("name")
print(d3)#zhangsan
d4=d2["name"]
print(d4)#zhangsan
d5=d2.get("scroe")#指定不存在的键取值
print(d5)#None
d6 =d2["scroe"]#指定不存在的键进行取值
print(d6)#抛异常
给具体的键指定值
d2 = {'name':"zhangsan","age":18}
d2 ={}.fromkeys(["name","age"])#不指定值
print(d2)#{'name': None, 'age': None} 默认为none
d2 ={}.fromkeys(["name","age"],"xiaoliu")#指定值
print(d2)#{'name': 'xiaoliu', 'age': 'xiaoliu'}
python2:has_key函数检查字典是否含有指定的数,返回布尔值
python3:_contains_函数检查字典是否含有指定的数,返回布尔值
注意:python3中不使用has_key
a={'name':"zhangsan",'age':123} #定义一个字典
print(a.contains("name")) #True
print(a.contains("score")) #False
popitem函数随机返回并删除字典中的键值对(一般删除末尾对)
如果字典已经为空,却调用了此方法,就报出KeyError异常
a={'name':"zhangsan",'age':123} #定义一个字典
print(a.popitem()) #('age', 123) 默认删除最后的并返回
print(a) #{'name': 'zhangsan'}
update函数把两个字典拼接合成一个新的
a={'name':"zhangsan",'age':123} #定义一个字典
a1={'score':85} #定义一个字典
a.update(a1) #将a1合并到a中
print(a) #{'name': 'zhangsan', 'age': 123, 'score': 85}
a={'name':"zhangsan",'age':123} #定义一个字典
a1={'name':"xiaoshu"} ##定义一个字典
a.update(a1) #将a1合并到a中
print(a) #{'name': 'xiaoshu', 'age': 123}
#注意:两个字典里有相同的键时,会执行替换操作
字典转换元组
a={'name':"zhangsan",'age':123} #定义一个字典
print(type(a)) #
a1=tuple(a) #通过tuple将字典转化为元组
print(type(a1)) #
print(a1) #('name', 'age') 字典转化为元组后之后,只留下键
#注意:元组不能直接转化为字典
字典转列表
a={'name':"zhangsan",'age':123} #定义一个字典
a1=list(a) #通过list将字典转化为列表
print(type(a1)) #
print(a1) #['name', 'age'] 字典转化为列表后之后,只留下键
字符串转字典
a="{'name':'zhangsan','age':123}" #定义一个字典类型的字符串
print(type(a)) #
a1=eval(a)
print(type(a1)) #
print(a1) #{'name': 'zhangsan', 'age': 123}
列表转字典
list1=["name","age"]
list2=['zhangsan',18]
a= zip(list1,list2)#把两个列表连接,把索引值相同的为一个整体
for i in a:
print(i)#不能直接查看结果,需要遍历
print(type(i))
print(dict(a))#{'name': 'zhangsan', 'age': 18}#通过字典的类型转换形成一个字典
print(type(a))#
利用for in rang 将两个列表转换为字典
list1=["name","age"]
list2=['zhangsan',18]
di1={}
for i in range(len(list1)):
di1[list1]=list2
print(type(di1))
print(di1)
集合:没有切片操作
集合分为可变集合和不可变集合
可变集合:set
不可变集合:frozenset
相同点:都能够去重
不同点:可变集合去重可以实现增删改
不可变集合去重后不可以实现增删改
#可变集合
a=[1,2,3,4,1] #定义一个列表
a1=set(a) #可变集合去重
print(a1) #{1, 2, 3, 4}
a1.add("xiaoshu") #添加字符串
print(a1) #{1, 2, 3, 4, 'xiaoshu'}
#不可变集合
a=[1,2,3,4,1] #定义一个列表
a1=frozenset(a) #不可变集合去重
print(a1) #frozenset({1, 2, 3, 4})
#无法调用add添加字符
#可变集合
a =[1,2,3,4,1]#定义一个列表
a1= set(a)#可变集合去重
print(a1)#{1, 2, 3, 4}
a1.add("xiaoliu")#添加字符
print(a1)#{1, 2, 3, 4, 'xiaoliu'}
#a.clear()#清除集合中的内容
print(a)#[]
a1.pop()#随机移除一个元素
print(a1)
a1.remove(4)#删除集合中的元素
a2 =a1.copy()#复制集合
print(a1)#{1, 2, 3, 'xiaoliu'}
print(a2)#{1, 2, 3, 'xiaoliu'}
|
|