python基础数据类型(三) 最后更新时间:2023年02月21日 #### 1.元组 ##### 元组介绍 元组也是一个序列结构,但是是一个不变的序列。除了内部元素不能修改以外,元组几乎和列表相同。 ##### 元组创建 ###### · 用() 创建元组可以用()直接创建。实质是定义python使用的数据结构类型。 示例: ```python tup=("sword", "art", "online") ``` ###### · 用tuple()进行创建 使用`tuple()`来创建,括号中的内容为序列元素。 示例: ```python tup=tuple("刀剑神域") li=["sword", "art", "online"] tup_2=tuple(li) print(tup) print(tup_2) #==>('刀', '剑', '神', '域') #==>('sword', 'art', 'online') ``` ###### · 注意: 当创建只有单个元素的元组时,需要在元素后面加一个英文逗号",",否则不会被认为是元组。 示例: ```python tup=("sao",) tup_2=("sao") print(tup) print(tup_2) #==>("sao") #==>sao ``` ##### 元组与列表相同的操作 - 使用方括号加下标访问元素 - 切片(形成新元组对象) - python内置函数: - 统计元素个数:tuple.count() - 返回索引:tuple.index() - 排序:sorted() - 反转:reversed() - 加法及乘法 详情见另一篇博客:[链接](https://blog.csdn.net/weixin_52211352/article/details/111603683) ##### 元组中不允许的操作 - 不允许 修改 、新增 元素。(一级) - 不允许 删除 某个元素(但可以删除整个元组) ###### 注意: - 虽然无法对元组进行修改,但是可以对元组重新赋值,达到修改元组的目的。 - 元组不具有append,extend,remove,pop,index等这些方法或类似的方法。 - 由于元组不可变,因此相比于列表,元组的运算速度比较快。 ##### 元组与列表的区别 - 元组不能增、删、改。 - 元组的处理速度要比列表快,当程序中只对序列进行访问时,元组更具有优势。 - 元组和列表都支持切片操作,但是元组只支持切片访问。 - 元组可以作为字典的键值,而列表不行。 ##### 元组与列表之间的转换 - 列表——>元组:tuple(list) - 元组——>列表:list(tuple) #### 2.字典 ##### 字典介绍 Python 的字典数据类型是基于 hash 散列算法实现的,采用 键值对 (key:value) 的形 式,根据 key 的值计算 value 的地址,具有非常快的查取和插入速度。它是一种 可变 对象 ,所以支持修改、插入、删除等操作。 ##### 字典的创建 ###### · 用{} 创建字典可以用{}直接创建。其格式为: `name={key1:value1,key2:value2}` 示例: ```python di={} di_2={"name":"kirito", "age":"16"} ``` ###### · 用dict() 使用`dict()`创建也有两种方法。 方法一: 格式为:`dict(key1=value, key2=value2)` ```python di=dict(name="kirito", age="16") ``` 方法二: 格式为:`dict([(key1, key2), (value1, value2])` ```python di=dict([("name", "age"), ("kirito", 16)]) ``` ###### · 拓展: map(func,*iterables): 将 iterables 里面的元素逐个传到 func 里面做处理。 - 示例: ```python """将list("12345")中的元素全部转为int类型。""" li=list("12345") print(li) print(list(map(int,li))) #==>["1", "2", "3", "4", "5"] #==>[1,2,3,4,5] ``` - 用map进行字典的创建: ```python ke=["name", "age"] va=["kirito", 16] def dic(k,v): return (k,v) print(dict(map(dic,ke,va)))#==>输出为{'name': 'kirito', 'age': 16} ``` zip(iter1 [,iter2 [...]]): 将iter1 iter2 中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 - 示例: ```python li_1=["name", "age"] li_2=["kirito", 16] print(list(zip(li_1,li_2)))#==>[('name', 'kirito'), ('age', 16)] #看得出,name和kirito下标对应,age和16下标对应 ``` - 用zip进行字典的创建: ```python li_1=["name", "age"] li_2=["kirito", 16] print(dict(zip(li_1,li_2)))#==>{'name': 'kirito', 'age': 16} ``` ##### 字典的查、增、删、改 ###### · 字典的查询 在Python中,字典使用key值来查询。其格式为: `dict[key]` 示例: ```python di={"name":"kirito", "age":16} print(di["name"])#==>输出为kirito ``` ###### · 字典的增加 增加就是往字典插入新的键值对,直接进行赋值即可。其格式为: `dict[key]=value` 示例: ```python di={"name":"kirito", "age":16} print(di)#==>{"name":"kirito", "age":16} di["sex"] = "男" print(di)#==>{"name":"kirito", "age":16, "sex":"男"} ``` ###### · 字典的修改 修改就是给原有的键赋予新的值。由于一个 key 只能对应一个值,所以,多次对一个 key 赋值,后面的值会把前面的值覆盖掉。 示例: ```python di={"name":"kirito", "age":16, "sex":"女"} di["sex"] = "男" print(di)#==>{"name":"kirito", "age":16, "sex":"男"} di_2={"name":"kirito", "age":16, "sex":"女", "sex":"男"} print(di_2)#==>{"name":"kirito", "age":16, "sex":"男"} ``` ###### · 字典的删除 |方法|功能| |-|-| |del dict[key]|删除指定key的元素| |dict.pop(key)|删除指定key的元素(在字典中,pop必须传入key参数)| |del dict|删除字典| |dict.clear()|清空字典| 示例: ```python di={"game":"刀剑神域", "name":"kirito", "age":16, "sex":"男"} del di["game"] print(di)#==>{'name': 'kirito', 'age': 16, 'sex': '男'} di_2={"game":"刀剑神域", "name":"kirito", "age":16, "sex":"男"} di_2.pop("game") print(di_2)#==>{'name': 'kirito', 'age': 16, 'sex': '男'} di_3={"game":"刀剑神域", "name":"kirito", "age":16, "sex":"男"} del di_3 print(di_3)#==>报错了 di_4={"game":"刀剑神域", "name":"kirito", "age":16, "sex":"男"} print(di_4.clear())#==>None ``` ##### 字典常见操作(熟悉) dict.get(k[,d]) --> 返回指定键的值,如果值不在字典中,则返回default值。 dict.items() --> 以列表返回可遍历的(键, 值) 元组对 dict.keys() --> 以可迭代序列返回字典所有的键(函数返回的是一个可迭代序列,而不是列表) dict.values() --> 以列表返回字典所有的值 #### 问题: ###### 问题一: ```python lis1 = ["name", "author", "introduce"] lis2 = ["NORWEGIAN WOOD", "Haruki Murakami", "balalalala…"] ``` 将lis1与lis2以键值对的形式呈现。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201227172006581.png) 回答: ```python lis1 = ["name", "author", "introduce"] lis2 = ["NORWEGIAN WOOD", "Haruki Murakami", "balalalala…"] di=dict(zip(lis1,lis2)) print(di)#==>{'name': 'NORWEGIAN WOOD', 'author': 'Haruki Murakami', 'introduce': 'balalalala…'} ``` ###### 问题二: ```python Amy_info={'name':'amy','addr':'hunan', 'weight':90} ``` 获取amy_info的key,value。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201227172016226.png) 回答: ```python Amy_info={'name':'amy','addr':'hunan', 'weight':90} print(Amy_info.keys())#==>dict_keys(['name', 'addr', 'weight']) print(Amy_info.values())#==>dict_values(['amy', 'hunan', 90]) ``` ###### 问题三: 字节如何转字符串,字符串如何转字节? ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201227172029143.png) 回答: |转换|方法| |--|--| |bytes——>str|bytes.decode()| |str——>bytes|str.encode()|
Comments | NOTHING