Python基础-列表/元组/字典/集合(4)

1.序列(sequence):

序列是py中最基本的一种数据结构

可变序列
  • 列表
不可变序列
  • 字符串
  • 元组
序列基本操作:
  • +可以将相同的序列拼接成一个序列
  • *: 将序列重复指定次数
  • in : 检查元素是否存在于指定列表/元组中
  • not in:检查元素是否不存在指定列表/元组中
list=(12,None,'sh',True,3,5,6)+(5,5)
print(list*5)
print(5 in list)
print( 4 not in list)
几个函数
  • max():序列中最大元素
  • min():序列中最小元素
  • index(a,b,c):指定元素在序列中第一次出现时索引,a为查找元素,b为起始索引,c为结束索引,bc可以省略,如果序列中没有,则会抛出异常
  • count(a):统计指定元素出现的次数
list = (5, 3,5,8,9)
print(max('15881'))
print(min(list))
print(list.index(5,1,3))
print(list.count(5))

2.列表(List):

list是py中的一个对象。我们之前学习的对象只能保存单一的数据,列表可以保存多个有序的数据。也可以储存对象的对象。
列表的索引是从0开始的。

列表的创建:
#列表中只有一个元素
list=[12]
#列表中有多个元素,并且元素类型可以不同
list=[12,None,'sh',True]
#通过索引获取列表中的元素,如果索引超出,则会抛出list index out of range异常
a=list[0] #12
#注意:其也可以逆序访问,从-1开始
c=list[-2] #sh
# 获取列表元素数量
b=len(list)
列表的方法:
  • append() :向列表最后添加元素,依此只能添加一个
  • insert(a,b): 向列表的指定位置插入元素,a为要插入的位置,b为角标。需要注意的是,当a超出角标时,会插入最后一位。其也支持逆序,当超出逆序时,会插入第一位。
  • extend(a) :将a序列(列表,元组,字符串)元素添加到当前列表最后。如果是字符串,则会将字符串中每一个字符当成一个元素。
  • clear(): 清空列表
  • pop(a): 根据索引删除并返回被删除的元素。若没有指定a角标,则删除最后一个
  • del list[a] : 删除指定角标元素
  • remove(): 删除指定元素,如果列表中有多个相同元素,只会删除第一个
  • reverse():反转列表
  • sort():对列表进行排序,默认升序,如果需要降序则需要传递 reverse=True 注意:若列表中元素类型不同,则无法排序
list=[12,None,'sh',True]
list.append('s')
list.insert(-8,'a') #之前的0号元素变为1号
a=[1,4]
list.extend(a)
list.extend('asd')
list.pop(1)
#反转
list.reverse()
#降序
a.sort(reverse=True)
print(list)
list.clear()

切片

指从现有列表中,获取一个子列表。

  • 语法1: 列表[起始:结束]
    通过切片获取元素时,会包括起始位置,不会包含结束位置。
    切片不会影响原有列表,会返回一个新列表。
    若省略开始位置,则默认从头开始截取
    省略结束位置,则默认截取到最后
    若起始和结束都省略,等于创建了一个列表副本
list=[12,None,'sh',True]
print(list[1:3])
print(list[1:])
print(list[:3])
  • 语法2:列表[起始:结束:步长]
list=[12,None,'sh',True,3,5,6]
print(list[1:6:2])
print(list[1:6:-1])
#相当于逆序隔两个打印
print(list[::-2])

3.元组(tuple)

元组是一个不可变序列,其操作方式基本与列表一样,但是少了列表中的增删改方法。但是元组创建时,有几个特殊。

list0=()
# 只有一个元素时,必须加,不加就是一个int类型变量
list = (5,)
# 当元组不是空元组时,括号可以省略
list1=5,3,5
print(type(list0))
元组的解包(解构)

解包就是将元组当中每一个元素都赋值给一个变量
每一次解包里面,最多可以有一个带*号的变量。他其实就是一个list,他将解包中没有对应的元素放入列表中。

list=1,3,4,5,
a,b,c,d,=list
a,*b=list # b= 3,4,5
a,*b,c=list #b=3,4
print(b)

4.字典(dict)

字典是一种映射的数据结构,列表存储数据的性能很好,但是查询数据的性能很差。
字典中每一个元素都有唯一的名字,通过过指定的key值可以快速找到value,因此,查询元素时,字典的效率是非常快的。字典中有多个键值对,每一个键值对称位item
字典的值可以是任意对象, 字典的键可以是任意的“不可变对象” ,一般使用str

# 创建字典
a=(1,3)
#方式1,因为元组也是不可变的,因此可以作为键
dictionnary={'name':'h',a:[1,3,'s']}
#使用dict()函数创建字典,对应的键都是str
dictionnary1=dict(name='hha',age='15')
# 根据键获取值,若键值不存在则报错
b=dictionnary1['name']
#获取字典键值对个数
len(dictionnary1)
#in/not in 检查字典中是否包含指定的键
print('name' in dictionnary1)
#如果字典中存在此键则覆盖value值,若没有则添加键值对
dictionnary1['name']='54'
常用函数:
  • get(key,default): 通过key获取value
  • setdefault(key,default): 向字典中添加键值对,如果key存在则返回value值,若不存在则添加此键值对
  • update(dict):将其它字典的添加到当前字典,若有重复键,则添加的会覆盖之前的。
  • del dict['key']:删除指定键值对
  • popitem():删除最后一个键值对,删除之后返回的是包含两个元素的元组,第一个是删除的key,第二个是删除的value。 当字典为空时,会抛出异常。
  • pop(key,default) :删除指定的key,default可以省略,如果指定了default默认值,则key不存在时不会报错,直接返回default
  • clear():清空字典
  • copy():对字典进行浅拷贝,复制以后的对象时相互独立的。
a=(1,3)
dictionnary={'name':'h',a:[1,3,'s']}
dictionnary.get('name')
dictionnary.setdefault('age',18)
dictionnary.update({'sex':'man'})
del dictionnary[a]
dictionnary.popitem()
dictionnary.pop('name','None')
b=dictionnary.copy()
b.clear()
dictionnary.setdefault('ss',{'15':77})
#字典嵌套
print(dictionnary['ss']['15'])

5.集合(set)

集合和列表相似,其不同点在于

  • 集合中只能存储不可变对象
  • 集合中存储的对象是无序的,非插入有序,但是集合中相同类型元素是有序的
  • 集合中元素不能重复
set={1,3,6,4,5,'f'}
set=set()#空集合
set=set([1,3,4,5]) #将列表/元组转换为集合
#将字典转换为集合,只会包含键
set=set({'name':'he'})
常用函数:
  • len():集合元素个数
  • add():向集合中添加元素。
  • update():将一个集合/序列/字典中的元素添加到当前集合中。
  • pop():随机删除并返回集合中的元素
  • remove(value):删除集合中指定元素
  • clear():清空集合
  • copy():浅拷贝
set={1,3,6,4,5,'f'}
len(set)
set.add(7)
set.update([2,3,5,3])
set.pop()
set.remove(3)
print(set)
set.clear()

集合的运算

在对集合做运算时,不会影响原来的集合,会返回一个新的结果。
如果a集合中的元素全部都在b集合中出现,那么a集合就是b集合的子集,b集合是a集合超集

  • &:交集运算
  • | :并集运算
  • -:差集运算
  • ^ :异或集:获取只在一个集合中出现的元素
  • <=:检查一个集合是否是另一个集合的子集
  • <:检查一个集合是不是另一个集合的真子集
  • > : 检查一个集合是不是另一个的真超集
  • >=:检查一个集合是否是另一个的超集
a={1,4,5,7}
b={1,4,5,7,3,6}
print(a&b) #{1, 4, 5, 7}
print(a|b) #{1, 3, 4, 5, 6, 7}
print(a^b) #{3, 6}
print(a<=b) #True
print(a<b) #True
print(a>b) #False
print(a>=b)  #False
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358

推荐阅读更多精彩内容