Python学习(三)组合数据类型

目录

数据类型

列表​编辑

列表对象及其创建与删除

列表的操作

字典

字典的概念和实现原理及创建

字典元素的获取 

字典的操作

 元组

元组的概念和创建方式

元组的操作:

集合

集合的概述与创建

集合的常规操作

集合之间的关系和数据操作

集合生成式

字符串

创建与驻留机制

字符串的常用操作

字符串的比较操作

字符串的切片操作

格式化字符串

字符串的编码和解码


组合数据类型可以分为三类:序列类型映射类型集合类型。序列类型包括列表、元组、字符串三种;映射类型中包含键值,典型的也就是字典;集合类型中元素无序,并且不允许有相同元素出现。


序列总体概况 
        序列类型(列表、元组、字符串)就是单纯的数据组合。元素之间存在先后关系,因此可以使用索引进行访问([i])。

        当然,序列元素中也可以出现序列类型。

        Python中典型的序列类型包括:字符串(str)、列表(list)、元组(tuple)。字符串是单一字符的有序集合,所以可以视作基本数据类型。无论哪种序列类型,都可以使用相同的索引体系,从左到右序列号递增(下标,第一个为0),从右到左序列号递减(下标,第一个为-1)。

        序列类型常用的操作符和方法如下表所示,这些均是学习序列类型中具体类型的基础:

(x为序列中的某一元素,s和t为序列,ijk为序列的索引)

操作符和方法    功能
x in s    x是s的元素就返回True
x not in s    x不是s的元素就返回True
s + t    将s和t序列连接起来(s和t必须是相同的数据类型)
s * n    将s复制n次
s[i]    返回s序列第i下标的元素
s[i:j]    返回s中[i,j)的子序列
s[i:j:k]    返回s中[i,j)以k为步长的子序列
len(s)    返回s序列的元素总数
max(s)    返回s序列中最大元素
min(s)    返回s序列中最小元素
s.index(x[,i[,j]])    返回序列s在区域[i, j)第一次出现x的位置
s.count(x)    返回序列s中出现x的总数
       

数据类型

列表

列表对象及其创建与删除

1)变量只可以存储一个元素,而列表可以存储N个元素,程序可以方便地对这些数据进行整体操作(相当于其他语言中的数组) 可以存储不同类型的元素

 (列表对象的讲解这里不是很明白) 

2)列表的创建:列表对象是一个连续的空间

#列表的第一种创建方式:直接用中括号
lst =['hello','world',98]   
#列表的第二种创建方式:使用内置函数list()
lst2 =list('hello','world',98)

3)列表的特点:

        列表元素按顺序有序排列

        索引映射唯一数据

        可以存储任意类型数据且可存储重复数据

        根据需要动态分配回收内存

列表的操作

1)查询操作:

        获取列表中指定元素的索引

lt = ['hello', 'world',' 'id' 98 'hello']
print( lt.index('hello'))   #如果列表中有相同元素只返回相同元素的第一个元素的指引
 #若查询元素不存在,则会抛出ValueError

print(lt.index('hello'),1,4)   #可以在指定start和stop之间内查找

        获取列表中的单个元素

正向索引:从0到N-1,例list[0]

负向索引:从-1到-N,例list[-3]

若索引不存在,则出现IndexError

        获取多个元素(切片操作) 

        列表的判断及遍历:

2)增、删、改操作:

        增加操作

append()函数,在原列表的末尾添加一个元素,没有新列表生成,使用方法list.append( ),可以添加任何类型元素

extend()函数,向列表的末尾一次性添加多个元素

         删除操作 

remove()函数:一次只删除一个元素,重复元素只删除一个,元素不存在则抛出ValueError

pop()函数:删除一个指定索引位置上的元素,索引不存在则抛出IndexError,若未指定索引则删除最后一个元素

切片:删除至少一个元素,将会产生一个新的列表对象

clear()函数:清空列表中所有元素

del语句将列表对象删除

lt = [7,8,9,02,67,78]
new=lt[1:3]         #产生一个新列表

lt[1:3]=[]     #不产生新的列表

        修改操作

lt=[10,20,30,40,50,60]
lt[2]=100    #一次修改一个值
lt[1:3]=[300,400,500,500]   #切片修改多个值

3)列表元素的排序:

 (判断是否产生新的对象可以用打印id来判断)

lt=[8,3,4,6,7,9]
lt.sort()  #对列表进行一个升序排序
lt.sort(reverse=True)  #对列表进行一个降序排序

#使用内置函数sorted(),将产生一个新的列表

4)列表生成式: 

字典

字典的概念和实现原理及创建

1)字典概念:python内置数据结构之一,以键值对的方式存储数据,是无序序列,但与列表一样是可变序列(可以进行增删改操作)。因为字典的值是通过hash(key)函数存入的,所以字典的key必须是不可变序列(不能直接进行增删改操作的序列)

不可变序列:无法在原来的序列上直接进行增删改操作,要进行下列操作,只能重新声明空间 (整数序列、字符串序列,元组)。可变序列:可以进行增删改操作,操作完之后对象地址不发生改变(列表、字典,集合)

 2)字典的实现原理:根据key查value

3)字典的创建:1.常用花括号{ }创建:scores={'张山':165,'里斯':175}

                               2.用内置函数dict()创建:dict(name='jack',age=20)

                                3.创建空字典:d={ }

字典元素的获取 

1)get方法默认值设置:scores.get('里斯',99)   #99就是不存在指定key时的默认值

字典的操作

1)key的判断in指定的key在字典中存在则返回True,not in指定的key在字典中不存在则返回True

2)字典的删除

scores={'张山':165,'里斯':175}
del scores['张山']   #删除指定的key-value对
print(scores)
scores.clear()     #清空字典中所有内容
print(scores)

3)字典元素的新增

scores={'张山':165,'里斯':175}
scores['张山']=195   #修改字典中的键值对所对应的值
print(scores)
scores['陈留']=195    #新增元素
print(scores)

4)获取字典视图:keys获取字典当中所有键,values获取字典当中所有值,items获取字典当中所有键值对。

scores={'张山':165,'里斯':175}
keys=scores.keys()    #获取所有的keys
print(keys)
print(type(keys))        #元素类型为<class 'dict_keys'>
print(list(keys))        #将所有keys元素组成的视图转换成列表

values=scores.values()    #获取所有的values
print(values)
print(type(values))      #元素类型为<class 'dict_values'>
print(list(values))        #将所有values元素组成的视图转换成列表

items=scores.items()    #获取所有的items
print(items)
print(type(items))      #元素类型为 <class 'dict_items'>
print(list(items))        #将所有items元素组成的视图转换成列表,列表元素均为元组

 5)字典元素的遍历:for i in range(字典)     遍历的到的是字典中的key

6)字典的特点:    键不能重复,值可以重复

                                字典当中的元素是无序的

                                键必须是不可变对象

                                字典可以根据需要动态伸缩

                                字典会浪费较多的内存,是一种空间换时间的数据结构(查询速度快)

7)字典生成式

 元组

元组的概念和创建方式

1)python内置的数据结构之一,是不可变序列,用( )表示

2)元组的创建方式:1.使用( )创建元组,有多个元素时也可以省略小括号,只有一个数据内容的时候要加上逗号,不然会默认为其他类型的数据         2.使用内置函数tuple()函数创建元组 

元组的操作:

1)元组是不可变序列,其优点:在多任务环境中,同时操作不需要加锁。元组存储的是对象的引用,如果元素本身是不可变对象,则不能再引用其他对象,但如果元素本身是可变对象,则可变对象的引用不可以改变,但是数据内容可以改变

2)元组的遍历:元组是可迭代对象,所以可以用for  in 循环。第一种获取元组元素的方法:使用索引t[0]、t[1]          第二种获取元组元素的方法:使用for  in循环。

集合

集合的概述与创建

1)概念:python语言中的内置数据结构之一,是没有值的字典,与列表、字典一样都属于可变序列类型

2)集合的创建方式:1.直接使用{ }创建               2.使用内置函数set( )创建:set( )函数也可以将其他类型的元素转换成集合类型的元素                3.若要定义空集合,则不能直接用{ },直接用会产生新字典,而不是空集合,所以要定义空集合只能用set( )函数。

3)集合的特点:元素不能重复,若有重复元素,则只存储一个,且元素是无序

集合的常规操作

1)集合元素的判断操作:in或not in,判断结果为True或False

2)集合元素的新增操作:1.使用add()函数,一次添加一个元素

                                           2.update()函数,一次至少添加一个元素(可以添加多个元素)

3)集合元素的删除操作:

        1.remove( )函数,一次删除一个指定元素,若指定元素不存在则抛出KeyError,使用t.remmove() ,t为集合名称

        2.discard()函数,一次删除一个指定元素,若指定元素不存在不报异常,使用t.discard() ,t为集合名称

        3.调用pop方法,一次删除一个任意元素

        4.clear()函数,清空集合中所有元素

集合之间的关系和数据操作

1)集合之间的关系       

         判断集合是否相等:用==或者!=判断,只要元素都相等,则集合相等,与位置无关,因为集合是无序的。

        判断子集(issubset):s2.issubset(s1),返回结果为True或者False

        判断超集(issuperset):s2.issuperset(s1),判断s2是否是s1的超集

        判断两个集合没有交集(isdisjiont):s2.isdisjiont(s4),判断s2和s4是否有交集,没有交集为True,有交集为False

2)集合的数据操作:

        1.交集操作:s1.intersection(s2)与s1&s2等价

        2.并集操作:s1.union(s2)与s1|s2等价    #交并集操作之后原集合都没有发生变化

        3.差集操作:s1.difference(s2)与s1-s2等价,用s1集合减去s2集合,原集合也没有发生改变

集合生成式

1)列表生成式:lst=[i*i,for i in range(6)],集合生成式:t={i*i,for i in range(6)}

字符串

创建与驻留机制

1)字符串再python中是基本数据类型,是不可变字符序列

2)字符串的驻留机制:仅保存一份相同且不可变的字符串的方法,创建相同字符串时,不会开辟新空间,而是把该字符串地址赋值给新的变量

字符串的常用操作

1)字符串查询操作:

 2)字符串大小转换操作方法:

upper( )和lower( )函数转换后会生成一个新的字符串对象

 3)字符串内容对齐操作的方法:

4)字符串分割操作 

5)判断字符串的方法: 

 6)字符串的替换与合并:

字符串的比较操作

1)

字符串的切片操作

1)字符串是不可变对象,不具备增删改操作,切片后将产生新的对象。

格式化字符串

1)

字符串的编码和解码

1)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值