文章目录
八大数据类型的内置方法
四、元组(tuple)的内置方法
1.作用
元组与列表类似,也是可以存多个任意类型的元素,不同之处在于元组的元素不能修改,即元组相当于不可变的列表,用于记录多个固定不允许修改的值,单纯用于取
2.类型转换
但凡能被for循环的遍历的数据类型都可以传给tuple()转换成元组类型
print(tuple('qwer')) # ('q', 'w', 'e', 'r')
print(tuple([1,2,3])) # (1, 2, 3)
print(tuple({'name':'chen','age':18}))# ('name', 'age') 传递出来的是字典的
# key值
print(tuple((1,2,3))) # (1, 2, 3)
print(tuple({1,2,3,4})) # (1, 2, 3, 4)
'''所有能够支持for循环的数据类型都可以转换为元组类型'''
3.使用
tuple1 = (1, 'hhaha', 15000.00, 11, 22, 33)
1、按索引取值(正向取+反向取):只能取,不能改否则报错!
print(tuple1[0]) # 1
print(tuple1[-2]) # 22
'''元组不能改变值'''
tuple1[0] = 'hehe' # 报错:TypeError:
2、切片(顾头不顾尾,步长)
tuple1[0:6:2] # (1, 15000.0, 22)
3、长度
print(len(tuple1)) # 6
4、成员运算 in 和 not in
print('hhaha' in tuple1) # True
print('hhaha' not in tuple1) # False
5、循环
for line in tuple1:
print(line , end=' ') # 1 hhaha 15000.0 11 22 33
'''拓展'''
1.元组内部如果只有一个元组也要加逗号,否则就不是元组,只有加了逗号才是元组
错误示范:
res = (123)
print(type(res)) # <class 'int'>
res1 = (123.2)
print(type(res1)) # <class 'float'>
res3 = ('hello')
print(type(res3)) # <class 'str'>
'''以后只要是容器类型的数据类型,内部只要只有一个元素,末尾都推荐加一个逗号'''
"""
容器类型:只要是内部能够存放多个元素的都可以称为是容器类型
eg:list dict tuple set
不是容器类型的:int float str bool
"""
五、字典(dict)的内置方法
1.类型转换
转换1:
info=dict([['name','tony'],('age',18)])
print(info) # {'name': 'tony', 'age': 18}
转换2:fromkeys会从元组中取出每个值当做key,然后与None组成key:value放到字典中
print({}.fromkeys(('name', 'age', 'sex'), None))
# {'name': None, 'age': None, 'sex': None}

2.优先掌握的操作
1、按key存取值:可存可取
1.1 取
dic = {
'name': 'xxx',
'age': 18,
'hobbies': ['play game', 'basketball']
}
print(dic['name']) # xxx
print(dic['hobbies'][1]) # basketball
1.2 对于赋值操作,如果key原先不存在于字典,则会新增key:value
dic = {'name':'chen','age':18,'height':'182'}
dic['gender'] = 'male'
print(dic) #{'name': 'chen', 'age': 18, 'height': '182', 'gender': 'male'}
1.3 对于赋值操作,如果key原先存在于字典,则会修改对应value的值
dic = {'name':'chen','age':18,'height':'182'}
dic['name'] = 'jack'
print(dic) # {'name': 'jack', 'age': 18, 'height': '182'}
=================
2、长度len
print(len(dic)) # 3
=================
3、成员运算in和not in
'''判断某个值是否是字典的key'''
print('name' in dic) # True
print('name' not in dic) # False
=================
4、删除
dic.pop('name') # 通过指定字典的key来删除字典的键值对
print(dic) # {'age': 18, 'height': '182'}
=================
'''字典的三剑客'''
5、键keys(),值values(),键值对items()
dic = {'name':'chen','age':18,'height':'182'}
'''keys方法把字典中得所有的key值组织成一个列表'''
print(dic.keys()) # 获取字典所有的key
# dict_keys(['name', 'age', 'height'])
print(dic.values()) # 获取字典所有的value
# dict_values(['chen', 18, '182'])
print(dic.items()) # 获取字典所有的键值对
# dict_items([('name', 'chen'), ('age', 18), ('height', '182')])
=================
6、循环
6.1 默认遍历的是字典的key
for i in dic:
print(i, end=' ') # name age height
6.2 只遍历key
for i in dic.keys():
print(key , end = ' ') # name age height
6.3 只遍历value
for i in dic.values():
print(i , end = ' ') # chen 18 182
6.4 遍历key与value
for i in dic.items():
print(i , end = ' ') #('name', 'chen') ('age', 18) ('height', '182')
3.需要掌握的操作
1.get()
dic= {'k1':'jason','k2':'Tony','k3':'JY'}
print(dic.get('k1')) # 'jason' key存在,则获取key对应的value值
print(dic.get('xxx')) # key不存在,不会报错而是默认返回None
print(dic.get('xxx',666)) # '666' key不存在时,可以设置默认返回的值
# ps:字典取值建议使用get方法,中括号取值是可以用的
2.pop()
dic= {'k1':'jason','k2':'Tony','k3':'JY'}
v = dic.pop('k2') # 删除指定的key对应的键值对,并返回值
print(dic) # {'k1': 'jason', 'k3': 'JY'}
3.popitem()
dic= {'k1':'jason','k2':'Tony','k3':'JY'}
v = dic.popitem() # 随机删除一组键值对,并将删除的键值放到元组内返回
print(dic) # {'k1': 'jason', 'k2': 'Tony'}
4.update()
'''用新字典更新旧字典,有则修改,无则添加'''
dic= {'k1':'jason','k2':'Tony','k3':'JY'}
dic.update({'k1':'JN','k4':'xxx'})
print(dic) #{'k1': 'JN', 'k2': 'Tony', 'k3': 'JY', 'k4': 'xxx'}
5.fromekey()
dic = dict.fromkeys(['k1','k2','k3'],[])
print(dic) # {'k1': [], 'k2': [], 'k3': []}
6.setdefault()
'''key不存在则新增键值对,并将新增的value返回'''
dic={'k1':111,'k2':222}
res=dic.setdefault('k3',333)
print(res) # 333
print(dic) # {'k1': 111, 'k3': 333, 'k2': 222} 字典中新增了键值对
'''key存在则不做任何修改,并返回已存在key对应的value值'''
dic={'k1':111,'k2':222}
res=dic.setdefault('k1',666)
print(res) # 111
print(dic) # {'k1': 111, 'k2': 222} 字典不变
六、集合(set)的内置方法
1.类型转换
但凡能被for循环遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)
都可以传给set()转换成集合类型
v1 = set([1,2,3,4])
print(v1) # {1, 2, 3, 4}
v2 = set((1,2,3,4))
print(v2) # {1, 2, 3, 4}
v3= set({'name':'chen'})
print(v3) # {'name'}
v4 = set('ankn')
print(v4) # {'k', 'n', 'a'} 去重复的字符了,并且无序的

2.关系运算
我们定义两个集合friends1和friends2来分别存放两个人的好友名字,
然后以这两个集合为例讲解集合的关系运算
friends1 = {'zero','chen','jason','tom'}
friends2 = {'hani','oscar','jason','tom'}
1.合集/并集(|):求两个用户所有的好友(重复好友只留一个)
print(friends1 | friends2)
# {'zero', 'oscar', 'jason', 'chen', 'tom', 'hani'}
2.交集(&):求两个用户的共同好友
print(friends1 & friends2) # {'tom', 'jason'}
3.差集(-):
求用户1独有的好友
print(friends1 - friends2) # {'chen', 'zero'}
求用户2独有的好友
print(friends2 - friends1) # {'hani', 'oscar'}
4.对称差集(^) # 求两个用户独有的好友们(即去掉共有的好友)
print(friends1 ^ friends2) # {'zero', 'hani', 'chen', 'oscar'}
5.值是否相等(==)
print(friends1 == friends2) # False
6.父集:一个集合是否包含另外一个集合
6.1 包含则返回True
print((1,2,3) > (1,2)) # True
print((1,2,3) >= (1,2)) # True
6.2 不存在包含关系,则返回False
print(((1,2,3) >(1,3,4,5) )) # False
print(((1,2,3) >= (1,3,4,5) )) # False
7.子集
print((1,2) < (1,2,3)) # True
print((1,2) <= (1,2,3)) # True
3.去重
集合去重复有局限性
1.只能针对不可变类型
2.集合本身是无序的,去重之后无法保留原来的顺序
l=['a','b',1,'a','a']
s=set(l)
print(s) # {'b', 'a', 1} 将列表转成了集合
l_new=list(s) # 再将集合转回列表
print(l_new) # ['b', 'a', 1] 去除了重复,但是打乱了顺序
针对不可变类型,并且保证顺序则需要我们自己写代码实现,例如
l=[
{'name':'lili','age':18,'sex':'male'},
{'name':'jack','age':73,'sex':'male'},
{'name':'tom','age':20,'sex':'female'},
{'name':'lili','age':18,'sex':'male'},
{'name':'lili','age':18,'sex':'male'},
]
new_l=[]
for dic in l:
if dic not in new_l:
new_l.append(dic)
print(new_l)
# 结果:既去除了重复,又保证了顺序,而且是针对不可变类型的去重
[
{'age': 18, 'sex': 'male', 'name': 'lili'},
{'age': 73, 'sex': 'male', 'name': 'jack'},
{'age': 20, 'sex': 'female', 'name': 'tom'}
]
本文详细介绍了Python中的元组、字典和集合的内置方法,包括元组的不可变性质、类型转换、取值与操作,字典的键值存储、长度、成员运算、删除和操作方法,以及集合的创建、关系运算和去重特性。

被折叠的 条评论
为什么被折叠?



