当前位置: 首页>编程语言>正文

python 对象存储服务器 python存放数据的容器

数据容器

一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,每一个数据元素,可以使任意类型的数据,如字符串、数字、布尔等。

数据容器分为五类:
list(列表)、tuple(元组)、str(字符串)、set(集合)、dict(字典)

list(列表)

定义格式:

变量初始化时直接通过字面量方式定义,在打印时会直接输出列表里面的内容(和java不同,java是输出地址值)

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python,第1张

并且在Python中,同一个list可以存储不同类型的数据

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python_02,第2张

列表嵌套

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_字符串_03,第3张

list 列表的下标

就和java数组一样,索引从0开始。

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_学习_04,第4张

奇葩的是,索引可以为负数!!!!!!!!

最后一个元素索引为 -1,倒数倒数第二个元素索引为 -2,以此类推

超出索引取数据,程序报错。

list列表的常用操作

先区别函数和方法。写在类里面的函数称为方法,但是你在类里面调用又可以称为函数,你在类外面调用称为方法。反正一回事,差别不大,叫法不一样而已。类的定义和java差不多,但是这儿先不说类的含义。
查询元素
语法:列表.index(元素) 返回下标值。如果元素不存在会报错
如果有相同元素,则会返回第一个的索引

判断是否包含指定元素:
语法: 值 in 列表 # 返回值为bool

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python_05,第5张

修改元素
语法 : 列表[索引值] = 新值

插入元素

语法: 列表.insert(索引值,元素值) 在指定位置插入指定的元素,那么原本位置包括后面的元素一次向后挪一位

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python 对象存储服务器_06,第6张

语法: 列表.append(元素值) 追加元素到末尾

语法: 列表.extend(其他数据容器) 将其他数据容器内容取出来,一次追加到列表尾部。

语法: 列表3 = 列表1 + 列表2 将列表1、2的内容读取出来,合并到列表3

list_1 = [1,2,3]

list_1.extend([4,5,6]) # list_1 = [1,2,3,4,5,6]

删除元素
语法: del 列表[索引值] # 删除指定位置的元素,后面的自动补齐
语法: 列表.pop(索引值) # 删除指定位置的元素,并且会返回被删除的元素
语法: 列表.remove(元素值) # 删除匹配的第一个元素,有多个相同元素时,只删除匹配到的第一个

清空列表
语法: 列表.clear()

统计元素个数
语法: 列表.count(元素) 统计指定元素在列表中的个数(就是计算相同元素的个数)
语法: len(列表) 统计列表的长度

总结

列表存在上限, 2^63 -1
同一个列表可以容纳不同类型的元素
列表内的数据时有序存储的
允许重复元素
可以修改元素

list 列表的遍历

while 循环

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python_07,第7张

for 循环

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python_08,第8张

truple元组

元组同列表一样,都是可以封装多个,不同类型的元素。

但是!元组一旦定义完成,就不可以修改 用于只读数据的封装,防止数据被篡改,强制修改会报错。

定义语法:

变量名称 = (元素1,元素2 …)

定义空元组 : 变量名称 = () 或者 变量名称 = truple()

元组.index(元素值) 返回索引值

len(元组) 获取元组长度

元组可以嵌套,和list一样

根据索引值获取元素 元组[索引值]

count(元素值) 获取指定元素值出现的次数

元组遍历和 list列表一样

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python_09,第9张

!!注意:当你元组只有一个元素时,后面需要使用 , 结尾,不然系统会认为时 字符串

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python 对象存储服务器_10,第10张

!!奇葩内容来了,如果元组里面有一个 list 列表,那么 这个list 列表里面的内容是可以修改的。

结合java理解,元组里面 存放的是 list 的地址值,这个地址指向对应的list,list 列表里面的内容变了,但是元组存放的地址值没有变。 这就和java 基本类型 和 对象类型 是一样的。

当你元组存储的基本数据类型时,对应的值不能改变,当你存放的对象数据类型时,地址值没变,但是对应的对象里面的内容是可以改变的。不知道Python有没有对象的概念。(复习一下java,就像你方法传参数一样,当你实参传递的是基本数据类型是值传递,你在方法内部修改传递的值,不影响外面的值。当你实参传递的是对象,这个是址传递,传递的是地址值,你在方法内部修改对象,对外面也是生效的)

str 字符串

以数据容器的视角学习字符串
字符串是 字符 的容器,可以存放任意个字符(不绝对,取决于你电脑内存大小)

和元组一样,字符串是一个无法修改的数据容器。无法单个字符
无法进行类似操作: 字符串[0] = ”a“ del 字符串[0] 字符串.append(“a”)
你只能将变量指向另一个字符串(我想和java常量池是一个概念吧)

语法:下面对字符串的一系列操作(针对修改值得),都不会改变原有的字符串,只是生成一个新字符串进行返回。
字符串[索引值] # 支持正向索引和反向索引
字符串.index(“and”) # 查找指定字符串 第一次出现的索引值
字符串.replace(字符串1,字符串2) # 它并不是修改字符串,它是生成一个新的字符串进行返回。
字符串.split(分割符) # 将字符串按照指定分隔符进行分割为多个字符串,并存入列表对象,返回list 列表对象。字符串本身是不会变换
字符串.strip() # 去除字符串前后的空格以及回车
字符串.strip(字符串) # 去除字符串前后的指定字符串
例如: my_str = “12test and 21 test21”
my_str.strip(“12”) 输出为: “test and 21test”
这个去除字符串是按照单个字符进行去除的
字符串.count(字符串) # 指定字符串出现次数
len(字符串)

序列

序列是指:内容连续、有序,可以使用下标索引得一类数据容器
列表、元组、字符串均可以视为序列

序列操作操作----切片

切片:从一个序列中,取出一个子序列
例如: [1、2、3、4、5] —> [2、3、4] 这就是切片操作
语法: 序列[起始下标:结束下标:步长]
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列
起始下标表示从何处开始,可以留空,留空表示从头开始
结束下标表示何处结束(不含末尾元素),留空视作截取到末尾,
步长表示,依次取元素的间隔
步长1:一个一个取元素
步长2:每次跳过1个元素取
步长为负数,反向取(起始下标和结束下标也要反向标记)
注意:此操作不会影响序列本身,而是会得到一个新的序列

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python 对象存储服务器_11,第11张

总结分析:
列表可以修改,支持重复元素且有序
元组和字符串不可以修改,支持重复元素且有序

set集合

不支持重复元素,并且不是有序的
列表使用 : []
元组使用 : ()
字符串使用: “”
集合使用 : {}

集合定义:
变量名 = {元素1,元素2…}
变量名 = set() # 定义一个空集合
类型是 <class ‘set’>

集合无序,不支持索引访问。允许修改

下面程序运行多次,首先 3,6,9行代码打印结果顺序会不一样。每次取出元素也会不一样。

如果你放的是纯数字,那么结果都是一样的。

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_学习_12,第12张

清空集合

集合.clear()取两个集合的差集

集合1 . defference(集合2) 取出集合1和集合2的差集,(集合1有但是集合2没有的)

得到一个新集合,集合1和集合2不变

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python_13,第13张

消除两个集合的相同元素

语法: 集合1 . difference_update(集合2)

功能: 对比集合1 和 集合2 , 在集合1内,删除和集合2 相同的元素

结果: 集合1被修改,集合2 不变

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_学习_14,第14张

合并两个集合

语法: 集合1 . union(集合2)

功能: 将集合1 和 集合2 组合成新集合

结果: 得到新集合,集合1和集合2不变

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python 对象存储服务器_15,第15张

集合遍历

因为没有下标索引,所以只能使用for循环进行遍历

dict 字典

就和java的map集合是一样的, key----value的形式

定义字典:
变量名 = { key1 : value1,key2 : value2…}
定义空字典
变量名 = dict() 或者 变量名 = {}

key 值不允许重复,重复时,后面的会覆盖前面的。value可以时不同类型,也可以字典嵌套

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python_16,第16张

字典嵌套

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python 对象存储服务器_17,第17张

字典的操作

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python_18,第18张

字典.keys() # 获取全部的key

字典.values() # 获取全部的value

这两个方法获取出来的数据,通过类型转换,转换为list,顺序是一一对应的。针对 字典的for循环,可以直接对字典for循环,不用先去取key

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_python_19,第19张

数据容器总结

数据容器有:
list 列表 : 这个就和java数组类似,但是呢,类型不严格
truple 元组:这个就是不能只读的java数组,还是类型不严格
字符串:感觉这个没啥好说的
集合:对应java中的set集合,不能重复
字典:这个就是对应java的map集合

数据容器的通用操作:
len(容器) :统计容器元素的个数
max(容器) : 找出容器中的最大值
min(容器) : 找出容器的最小值 # 字符串根据ASCII码(从前往后的一位一位的比较),字典根据key判断

容器的通用转换:

list(容器) 将给定容器转换为列表 # 字典转list只剩key值

tuple(容器) 将给定容器转换为元组 # 字段转元组 只剩key值

set(容器) 将给定容器转换为集合 # 数据无序,重复的删除,字典只有key

str(容器) 将给定容器转换为字符串

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_java_20,第20张

其他数据容器转字符串之后,都是原样的,只是输出的时候,将双引号省略了。

通用排序
语法: sorted(容器,reverse = True)
reverse = True ,默认false 升序,true降序
排序的结果 返回的是列表!!!!!!!!!所以字典排序会丢失value

语法: 列表 . sort(key = 选择排序依据的函数 ,reverse = True|False)

key : 要求传入一个函数,表示将列表的每一个元素都传入函数中,返回排序的依据

reverse : 是否反转排序结果 , True 表示降序,False 表示升序

python 对象存储服务器 python存放数据的容器,python 对象存储服务器 python存放数据的容器_java_21,第21张



https://www.xamrdz.com/lan/5f31923041.html

相关文章: