python的多元数据类型(下)
作者:Tallbo
元组
1.什么是元组tuple
元组tuple像是一个list,但是它内部的值不可被修改。元组是一个有序的、不可变数据结构/类型
注意列表和元组之间一个有趣的关系:
列表 >> 元组 为加锁
元组 >> 列表 为解锁
支持元组和列表互相转换
元组是一个保险柜,数据进入就是安全的
列表和元组的对比:
为什么需要有元组?
1、元组tuple对于大型数据处理速度优于列表list,如果你有一个常量集需要经常遍历(for),那么元组的效率优于列表
2、元组tuple由于其无法“写入”的特点,放在元组内部的数据自然就有一个“写保护”,类似我们sd卡、cf卡或者部分U盘
3、特别注意:当函数(方法)返回的数据大于一个时,一般以元组形式返回
4、特别注意:由于元组的“写保护”模式,函数可以按照元组内部元素的位置顺序接受元组的数据
2.元组tuple支持什么数据类型
元组支持不可变的数据类型 :字符串str、整数int 、浮点float 、布尔bool 、元组tuple 、字典dict和列表list
3.元组tuple的基本特征
增加:支持空元组创建 不支持数据更新(添加)
删除:仅支持元组整体删除 不支持元素删除和切片删除
修改:不能修改
查询:
1、支持元组数据查询(基于下标、索引、index)
2、支持切片查询
3、支持第一级元素长度统计(len)
4.如何声明一个元组tuple
方法一:空值创建 tuple_data = tuple()
方法二:空值创建 tuple_data = ()
特别方法:单个值创建 tuple_data = (“北京”,)必须要有逗号以区分该类型为元组
特别方法:多值无括弧创建 tuple_data = “北京” , “上海”
元组的语法规则:元组之间使用 ,区隔 ("23",23,True,1.78,"人") 头尾使用小括弧() 元组添加其他类型数据(嵌套) ([35,"kk"],{"名字":"like","ij":"iji"},(4,1,"3")) 特别注意: 1、元组内的每个元素(数据),遵守该数据类型的原有规则。比如字符串类型是要加引号“” 2、可以有多层嵌套,每一层嵌套为一个独立体存在 3、元组的“写保护”只保护一级数据,如["like",29]是元组的一个元素,这个元素内的元素可以按照列表的方式进行增删改查操作,如果元组内还是元组,那么即为元组的规则,无法“写入”操作
5.玩转元组tuple
声明创建一个机遇个人信息的元组:
personal_info= (“like”,88,“张三”,1.4)
元组的基本操作: 1、查询: 查询数据 personal_info[1] 基于索引位置去数据>>>(88) (整数类型)取一个值为当前值的类型 personal_info[0:2] 基于索引范围取数据>>>("like",88)取多个值还是一个元组 2、删除: del personal_info 删除整个元组 3、元组的拼接: num_1 = (1,2,3) num_2 = (4,5,6) num_new = num_1 + num_2 输出为 >>>(1,2,3,4,5,6) 4、元组和列表转换: list_data = [1,2,3] new_tuple = tuple(list_data) 输出为>>> (1,2,3) tuple_data = (1,2,3) new_list = list(tuple_data) 输出为>>> [1,2,3] 5、元组通过变量直接取值 personal_info = ("张三","北京",22) name,city,age = personal_info 输出为>>> name 为 张三 city为北京 age为22 6、元素数量统计 message = (1,2,3,4,1,3,1) message.conunt(1) 输出>>>1 7、自身复制 message = (1,2,3) message_new = message * 3 输出为>>> (1,2,3,1,2,3,1,2,3) 8、元组的长度 num_1= (1,2,3,4) len(num_1) 输出为>>>4 9、包含关系判断 message = ("好",'好','学','习') "好" in message 输出为>>>True 特别注意仅支持当前层级的判断 10、切片延伸 num = (0,1,2,3,4,5,6,7,8,9) num[0:10:2][起:止:步长] 输出>>>(0,2,4,6,8) 特别注意-类似for循环里的range()函数 num[::2]输出>>>(0,2,4,6,8) 特别注意-起止不设定默认从头到尾的范围 11、new_tuple = ( "哈士奇","萨摩","泰迪") 元组跟列表这两个数据类型的性质决定了它通常内部存在的数据比较长,书写的时候会超出屏幕的边界,所以说你可以这样做: new_tuple = ( "哈士奇", "萨摩", "泰迪" ) 12、元组的嵌套 元组和元组嵌套与列表与列表嵌套的差异: 元组中的列表可以按照列表的特征进行操作: new_tuple = ( [1,2,3], [2,3,4], [3,4,5] ) 元组中的元组的元素不可以修改: new_tuple = ( (1,2,3), (2,3,4), (3,4,5) ) 13、tuple与for循环 1、初级难度 dogs = ( "哈士奇", "萨摩", "泰迪" ) for dog in dogs: print(dog) 第一次:哈士奇 第二次:萨摩 第三次:泰迪 2、中级难度 menus = ( ('拍黄瓜','大拌菜'), ('鸡丁','肉丝'), ('蛋糕','冰淇凌') ) for menu in menus: print(menu) 第一次:('拍黄瓜','大拌菜') 第二次:('鸡丁','肉丝') 第三次:('蛋糕','冰淇凌') 3、高级难度 menus = ( ('拍黄瓜','大拌菜'), ('鸡丁','肉丝'), ('蛋糕','冰淇凌') ) for menu in menus: print(menu) for food in menu: print(food) 第一次:('拍黄瓜','大拌菜') 内第一次:拍黄瓜 内第二次:大拌菜 第二次:('鸡丁','肉丝') 内第一次:鸡丁 内第二次:肉丝 第三次:('蛋糕','冰淇凌') 内第一次:蛋糕 内第二次:冰淇凌
字典
一个可以存储具有一系列映射关系的数据结构即为字典表 1、字典表dict支持什么数据类型: 字典中支持存储:字符串str、整数int、浮点float、布尔bool、列表list、元组tuple、字典dict 2、字典表的特征 dict 2个不准:不准改变键(KEY)键(KEY)不允许重复 dict4个支持:增加键(KEY)和值(Value) 删除键(KEY)和值(Value) 基于键(KEY)改变值(Value) 基于键(KEY)查询值(Value) dict 2个注意:只能使用不可变类型作为键、通常不使用数字(int/float)作为建 3、如何声明一个字典 方法一: 空值创建 dict_1 = dict() 方法二:空值创建 dict_2 = {} 方法三:非空值创建 dict _3 = {"姓名":'张三'} dict _4 = dict({"姓名":'张三'}) dict _5 = dict("姓名" = '张三') 按照key:value 的格式可以建立多个键值对(items)的字典表 一个键和一个值叫键值对在python里这个叫一个item(全部字典表里的键值对那就是items) 字典表的语法规则{'NAME':"张三","age",18} 键值之间 冒号:分割 键值对(item)之间的分割使用,逗号 字典表加入列表和元组类型 {"NAME":("张三","李四")},'city':['BJ',‘HB'] 注意列表 元组[ ] ( )外 不要加引号否则会转成字符串 4、玩转字典表 声明创建一个基于个人信息的字典 info = {"姓名":'张三',"年龄",20} 字典表基本操作 增加数据:info['性别'] = '男' 字典名[键] = 添加的值 修改数据:info['年龄'] = 21 字典名[键] = 修改的值 查询数据:info['年龄'] 或 info.get("年龄") 删除数据: del info['年龄'] 或 info.pop("年龄") 或 info.clear() 清空字典
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!