2.8-列表类型

字符串或者数值列表是程序中常用的数据类型,例如使用一个字符串列表存储全国的省份名称,使用一个数值列表存储全班学生的成绩等。教学目标是掌握这种列表数据的使用。

1、列表类型含义
列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型。列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。序列都可以进行的操作包括索引,切片,加,乘,检查成员。此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

2、如何创建列表?
只要把逗号分隔的不同的数据项使用方括号括起来即可,例如:

list1=["aa","bb",1,2]
list2=[1,2,3,4,5,2]

列表的元素可以重复,例如list2中有2重复
列表的元素类型可以不填,例如lis1中有字符串和数值
列表类型是Python 中的 list 类实例,例如:

list1=["aa","bb",1,2]
print(list1)
print(type(list1))

执行结果如下:

['aa', 'bb', 1, 2]
<class 'list'>

其中type(list1) 返回的类型是一个名称为 list1 的类。

3、如何访问列表中的值?
使用下标索引来访问列表中的值,也可以使用方括号形式截取字符,截取 的方法与字符串 截取 类似,例如:

list1=["aa","bb",1,2]
list2=[1,2,3,4,5,5,3,2]
print("list1[0]:",list1[0])
print("list2[1:5]",list2[1:5])

执行结果如下:

list1[0]: aa
list2[1:5] [2, 3, 4, 5]

4、如何修改列表中的数据项?
可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,例如:

list1=["aa","bb",1,2]
print("list1[1]:",list1[1])
list1[1]="BB" # 修改列表中的数据项
print("list1[1]:",list1[1])
list1.append(3) # append 增加列表数据项
list1.append("3")
print(list1)

执行结果如下:

list1[1]: bb
list1[1]: BB
['aa', 'BB', 1, 2, 3, '3']

5、如何删除列表中的数据项?
可以使用 del 语句来删除列表的的元素,例如:

list1=["aa","bb",1,2]
print(list1) # 删除列表数据项之前
del list1[2]
print(list1) # 删除列表数据项之后

执行结果如下:

['aa', 'bb', 1, 2]
['aa', 'bb', 2]

注意:del 删除数据项是将数据项和索引位置一起删除,而非将数据项置为空索引位置保留

6、多个列表如何组合?
可以使用"+"来连接多个列表,例如:

list1=["aa","bb",1,2]
list2=["cc","dd",3,4]
list3=list1+list2
print(list1)
print(list2)
print(list3)

执行结果如下:

['aa', 'bb', 1, 2]
['cc', 'dd', 3, 4]
['aa', 'bb', 1, 2, 'cc', 'dd', 3, 4]

7、列表如何截取?list[start:end:step]
start、end、step 可选,冒号必须的, 基本含义是从start 开始(包括list[start]),以step 为步长,获取到end 的一段元素(注意不包括list[end])。
如果step=1,为 list[start],list[start+1],…,list[end-2],list[end-1]。
如果step>1,第一为list[start],第二为list[start+step],第三为list[start+2*step],…, 以此类推,最后一个为list[m],其中m<end,但是m+step>=end。
即索引的变化是从start 开始,按step 跳跃变化,不断增大,但是不等于end,也不超过end
如果end 超过了最后一个元素的索引,那么最多取到最后一个元素。
start 不指定默认0,end 不指定默认序列尾,step 不指定默认1。
step 为正数则索引是增加的,索引沿正方向变化。
step 为负数则索引是减少的,索引沿负方向变化。
不能使用step=0,不然索引就原地踏步不变了。
如果start,end 为负数,表示倒数的索引,例如start=-1,则表示len(list)-1;start=-2,表
len(list)-2.

例如:

# 列表的截取
# start 默认0,end默认序列尾,step默认1
list=[0,1,2,3,4,5,6,7,8,9,10,11]
print('list',list)

# 用法一:显示start end,省略step
print('list[0:2]:',list[0:2]) # 截取第0位开始,到第2位,不包含第2位,步长为1,

# 用法二:显示end,省略 start step,此时start的冒号不能省略
print('list[:2]:',list[:2]) # 截取第0位开始,到第2位,不包含第2位,步长为1,start省略写法

# 用法三:显示 start end,省略step,end为负数,负数代表右边开始数的第几位,
# 注意倒数是从第1位开始,不像正序是从第0位开始
print('list[0:-2]',list[0:-2]) # 从第0位开始,取到倒数第2位结束,步长为1

# 用法四:显示start,省略end step,end省略代表序列尾
# start为负数代表右边开始的第几位
print('list[-2:]',list[-2:]) # 从倒数第2位开始,到序列尾,步长为1

# 用法五:end 取值索引小于start索引,则取不到数据
print('list[-2:6]',list[-2:6])

# 用法六:显示start,省略end step,end省略代表序列尾
# start为正数
print('list[2:]',list[2:])

# 用法七:显示start end,end为负数
# end为负数为右边开始的第几位
print('list[2:-1]',list[2:-1]) # 从第2位开始,到倒数第一位,步长为1

# 用法八:省略 start end step,但是 start 和 end 之间的冒号不能省略
print('list[:]',list[:]) # start省略为0,end省略为序列尾,step省略为1,相当于复制一份

# 用法九:省略start end,显示step
print('list[::2]',list[::2]) # start省略为0,end省略为序列尾,步长为2

# 用法十:省略start end,显示step,step为负数
# 步长为负数为从右边向左边移动
print('list[::-2]',list[::-2]) # step为负数,start省略为序列尾,end省略为第0位

# 用法十一:显示start end step,step为正数
# 步长为正数为从左边向右边移动
print('list[0:7:2]',list[0:7:2]) 

# 用法十一:显示start end step,step为负数
# 步长为负数为从右边向左边移动
print('list[7:0:-2]',list[7:0:-2]) # 从第7位开始,到第0位结束,从右边向左边移动,每次移动2位

# 用法十一:显示start end step,step为负数,end为负数
# 步长为负数为从右边向左边移动
# end为负数为右边开始的第几位
print('list[7:-1:-1]',list[7:-1:-1]) # 从第7位开始,到倒数第1位结束,从右边向左边移动,每次移动1位

# 用法十二:显示start end step,step为负数
# 步长为负数为从右边向左边移动
print('list[5:1:-2]',list[5:1:-2])

# 用法十二:显示start end,省略step,但是 end大于序列长度,取到序列尾
print('list[8:14]',list[8:14])

执行结果如下:

list [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
list[0:2]: [0, 1]
list[:2] [0, 1]
list[0:-2] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list[-2:] [10, 11]
list[-2:6] []
list[2:] [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
list[2:-1] [2, 3, 4, 5, 6, 7, 8, 9, 10]
list[:] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
list[::2] [0, 2, 4, 6, 8, 10]
list[::-2] [11, 9, 7, 5, 3, 1]
list[0:7:2] [0, 2, 4, 6]
list[7:0:-2] [7, 5, 3, 1]
list[7:-1:-1] []
list[5:1:-2] [5, 3]
list[8:14] [8, 9, 10, 11]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值