疯狂python讲义学习日志02——python序列类型容器

前言

本文属于小编在博客中分享的关于学习李刚《疯狂python讲义》系列学习日志,在这篇文章里主要分享python中使用的序列容器。

1 序列简介

所谓序列,是一种可以包含多项数据的数据结构,序列包含的多个数据按照顺序排列,课可以通过索引进行访问。

1.1 python的序列

Python中应用到的序列有列表(list)、元祖(tuple)和字典(dict)。列表中的元素是可变的,而元祖中的元素是不可变的。

1.2 创建列表和元祖

使用方括号创建列表,使用圆括号创建元祖。

#使用方括号定义列表
my_list=['crazy','handsome','smart']
#使用圆括号定义元祖
my_tuple=['crazy','handsome','smart']

2 列表和元组的通用方法

2.1 通过索引访问元素

索引是访问序列元素最为朴素的方法,值得注意的是在python中由于元组中的元素是不可变的,因此通过索引访问元组的元素时只可以使用它的值,但是不能重新赋值。

a_tuple=('hello','你好')
#访问元组第一个元素
print(a_tuple)
#访问第二个元素
print(a_tuple[1])
#访问倒数第一个元素
print(a_tuple[-1])

2.2 子序列

所谓子序列即访问列表或元组中指定的一段元素。

[start:end:step]#其中start表示起始位置(包含),end表示结束位置(不包含),step表示步长

start和end的数值可正可负,当数值为负数时。代表从倒数的位置开始。

a_tuple=(1,2,3,4,5,6,7,8,9)
#访问第2个元素到第4(不包含)个元素
print(a_tuple[1:3])#输出2,3
#访问倒数第3个到倒数第1个(不包含)元素 
print(a_tuple[-3:-1])#输出7,8
#访问第三个到第九个(不包含)元素,间隔为2
print(a_tuple[3:9:2])

2.3 加法

列表和元祖支持加法运算,加法的和就是两个列表或元组所包含的元素的和,列表只能和列表相加,元组只能和元组相加。

#下面演示两个元组相加
a_tuple=(1,2,3)
b_tuple=(4,5,6)
c_tuple=a_tuple+b_tuple
print(c_tuple)#输出1,2,3,4,5,6
#接下来演示列表相加
a_list=[1,2,3]
b_list=[4,5,6]
c_list=a_list+b_list
print(c_list)#输出1,2,3,4,5,6

2.4 乘法

列表和元组可以和整数执行乘法运算,相当于把他们包含的元素重复整数遍。

a_tuple=('1','2')
b_tuple=a_tuple*3
print(b_tuple)#输出1,2,1,2,1,2

2.5 in运算符

列表和元组可以使用in运算符来判断某个元素是否在其中。

a_tuple=('a','c','c')
print('a' in a_tuple)#输出True

2.6 长度、最大值和最小值

列表和元组可以使用len()、max()、min()函数进行相关操作。

序列封包和序列解包

所谓封包是指,可以将多个值赋给一个变量,python会自动将多个值封装为元组。解包是指将序列直接赋值给多个变量,序列中的各个元素会被依次赋值给每个变量。

#封包
vals=10,20,30
print(vals)#输出10,20,30
print(type(vals))#输出 <class 'tuple'>
a_tuple=tuple(range(1,10,2))
#序列解包
a,b,c,d,e=a_tuple
print(a,b,c,d,e)#输出1,3,5,7,9

python允许在左边被赋值的变量之前添加*,那么该变量就变成一个列表,可以保存多个元素。

first,*middle,last=range(10)
print(first)# 0
print(middle)#1,2,3,4,5,6,7,8
print(last)#9

3 使用列表

元组和列表的区别在于,元素中的元素是不可改变的。因此可以认为列表是增强版的元组。

3.1 创建列表

对于列表来说除了使用括号创建列表之外,还可以使用list()函数来创建。(python也为元组提供了tuple()构造函数来讲列表和区间转换为元组)

a_tuple=('hello','every','one')
#将元组转换为列表
a_list=list(a_tuple)
#将区间转换为列表
a_range=range(1,6)
b_list=list(a_range)
c_list=list(range(1,6,2))

3.2 增加列表元素

列表可以使用append()方法将传入的参数添加到列表的最后面,append()方法可以接收单个值,也可以接收一个元组、列表等,此时只是把元组和列表当成单个元素,在列表中通过append方法加入元组或列表,会在加入的列表中形成嵌套。

a_list=['1','2','3']
#追加一个元素
a_list.append('4')
print(a_list)#1,2,3,4
a_tuple=('5','6','7')
a_list.append(a_tuple)
print(a_lsit)#1,2,3,4,(5,6,7)#追加的a_tuple被整个视为一个元素

如果向列表追加一个列表不希望被视为一个元素,而是添加列表中的元素,则可以使用extend()方法。

b_list=['2','3','4']
b_list.extend(('5','6','7'))
print(b_list)#1,2,3,4,5,6,7

还可以使用insert()方法在列表中间插入元素。

c_list=range(1,6)
#在索引3处插入字符串
c_list.insert(3,'crazy')
print(c_lsit)#1,2,3,crazy,4,5
c_list.insert(3,tuple('crazy'))
print(c_list)#1,2,3,(c,r,a,z,y),'crazy',4,5

3.3 删除列表元素

python中提供了3种删除列表元素的方法。

  1. del:该方法可以删除列表中指定索引的元素,还可以用来删除python变量。
a_list=[1,2,3,4,5]
del a_lsit[2]
print(a_list)#输出1,2,4,5
del a_list[1:3]
print(a_list)#输出1,5
name= 'crazy'
print(name)#'crazy'
del name
print(name)#'NameError'
  1. 使用remove()方法删除元素,remove方法可以根据内容找到首先符合的元素进行删除。
  2. 还可以使用clear()方法,清空列表中的元素
c_list=[20,'crazyit',30,-4,'crazyit',3.4]
#删除第一次找到的30
c_list.remove(30)
print(c_list)#输出20,‘crazyit’,-4,'crazyit',3.4
c_list.clear()
print(c_list)#[]

3.4 修改列表元素

a_list=[2,4,-3.4,'crazyit',23]
#对第三个元素赋值
a_list[2]='fkit'
#对倒数第二个元素赋值
a_list[-2]=9527
#可以使用slice对列表赋值
b_list=list(range(1,5))
print(b_list)#输出1,2,3,4
b_list[1:3]=['a','b']
print(b_list)#输出1,a,b,4
#对列表中的空slice赋值,实现对列表插入元素
b_list[3:3]=['x','y']
print(b_list)#输出1,a,x,y,b,4
#对列表使用slice赋值不能使用单个值,如果使用字符串赋值python会把字符串当成序列处理
b_list[1:3]='charlie'
print(b_list)#1,c,h,a,r,l,i,e
#在使用slice语法赋值时也可指定step参数,如果指定了step参数,要求赋值的列表个数与所替换的列表元素个数相等。
c_list=list(range(1,10))
#指定step为2,被赋值的元素有4个,因此用于赋值的元素必须有四个元素。
c_list[2:9:2]=['a','b','c','d']
print(c_list)#输出1,2,a,4,b,6,c,8,d

3.5 列表的其他使用方法

  1. count():用于统计列表中某个元素出现的次数
  2. index():判断某个元素出现的位置
  3. pop():实现元素出栈操作,使用append()实现入栈
  4. reverse():将列表中的元素方向存储
  5. sort():用于对列表元素排序,sort可以按照参数名的方式传入key和reverse两个参数。
b_list=['python','swift','ruby','Go','Kotlin','Erlang']
b_list.sort(key=len,reverse=true)#使用len()函数对集合元素生成比较大小的键

4 使用字典

4.1 创建字典

程序可以使用花括号或dict()函数来创建字典,字典的key值需要是不可变类型的。

scores={'语文':89,'数学':92,'英语':93}
empty_dict={}#创建了一个空的字典

使用dict()函数创建字典时,可以传入多个列表或元组参数作为key-value对,每个列表或元组都会被当成一个key-value对,因此这些列表或者元组都只能包含两个元素。

vegetables=[('celery',1.58),('brocoli',1.29),('lecture',2.19)]
dict=dict(vegetables)
dict11=dict(me=7,you=3)#实现你三我七

4.2 字典的基本用法

scores={'语文':89}
#通过key访问value
print(scores['语文'])
#添加一个key-value
scores['数学']=93
#使用del删除key-value
del scores['语文']
#判断字典是否包含指定的Key
print('语文' in scores)#true

4.3 字典的常用方法

  1. clear():清空字典中的key-value
  2. get():根据key获取value
  3. update()如果包含已有的key-value对,进行更新
  4. items():获取所有的键值对
  5. keys():获取所有的key
  6. values():获取所有的value
  7. setdefault()用户根据key获取value,如果key不存在设置默认值。

4.4 使用字典格式化字符串

#在字符串模板中使用Key
temp='书名是:%(name)s,价格是:%(price)010.2f,出版社是:%(publish)s'
book={'name':'疯狂python讲义','price':88.9,'publish':'电子社'}
print(temp%book)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章