Python编程之序列结构

本文详细介绍了Python中的序列结构,重点讲解了列表的创建、访问、修改、分片、成员运算符以及常用操作函数。通过实例展示了列表的动态修改、数据分片技巧、成员运算符的使用,如`in`和`not in`,以及列表的容量修改方法,如`append()`、`insert()`、`remove()`、`pop()`、`extend()`和`del`。此外,还讨论了列表的复制和删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、序列结构介绍

Python中的序列类型有很多种:
字符串、列表、元组、字典

二、列表

列表是对传统数值的一种使用包装,但是与传统数组使用最大的不同在于,Python中的列表的内容是允许进行动态修改的

在Python中进行列表的定义直接使用 中括号([]) 就可以了

  • 定义列表

列表可以通过索引进行访问,而索引的下标是从0开始的,结束是列表的长度 - 1

# coding=UTF-8
infos = ['zhangsan','lisi','wangwu']
#列表可以通过索引的形式进行访问
print(infos[0],end='、')
print(infos[1],end='、')
print(infos[2])

执行结果:
在这里插入图片描述


注意1:空列表不等同于None

# coding=UTF-8
list_a = []
list_b = None
print('第一个列表的地址:%d,对应的数据类型:%s' % (id(list_a),type(list_a)))
print('第二个数据的地址:%d,对应的数据类型:%s' % (id(list_b),type(list_b)))

执行结果:
在这里插入图片描述


注意2:索引的范围不能超出列表的可用范围,否则会出现索引错误(下标越界)


注意3:Python中的列表可以进行反向的索引访问

# coding=UTF-8
list_a = ['zhangsan','lisi','wangwu']
#反向索引访问
print(list_a[-1],end='、')
print(list_a[-2],end='、')
print(list_a[-3])

执行结果:
在这里插入图片描述


注意4:Python中的列表中大部分的情况下都会使用相同的数据类型,但是在列表里面却可以保存不同的数据类型

# coding=UTF-8
list_a = ['zhangsan',True,100]
#反向索引访问
print(list_a[-1],end='、')
print(list_a[-2],end='、')
print(list_a[-3])

执行结果:
在这里插入图片描述

  • 使用for循环迭代
# coding=UTF-8
list_a = ['zhangsan','lisi','wangwu']
print('姓名:',end='')
for item in list_a:
	print(item,end='、')

执行结果:
在这里插入图片描述


# coding=UTF-8
list_a = ['zhangsan','lisi','wangwu']
for index in range(len(list_a)):
	print(list_a[index],end='、')

执行结果:
在这里插入图片描述

  • 依据索引修改数据内容
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu']
for item in infos:
	print(item,end='、')
print()

infos[1] = 'sunliu'
for item in infos:
	print(item,end='、')

执行结果:
在这里插入图片描述

  • 列表的加法及乘法运算
# coding=UTF-8
infos1 = ['zhangsan','lisi','wangwu'] * 3
for item in infos1:
	print(item,end='、')
print()

infos2 = ['zhangsan','lisi','wangwu'] + ['sunliu','zhaoqi']
for item in infos2:
	print(item,end='、')

执行结果:
在这里插入图片描述

三、数据分片

列表中存在很多的内容,如果我们需要只对其中的一部分内容进行操作,那么就需要进行分片处理

Python中的分片操作
列表对象(变量) [开始索引:结束索引:步长]

  • 数据分片实例
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu','sunliu','zhaoqi','xiaoming']
#截取3~6的数据
print('截取的第一段数据内容:%s' % infos[3:6])
#截取2到最后的数据
print('截取的第二段数据的内容:%s' % infos[2:])
#截取从开始到5的数据
print('截取的第三段数据的内容:%s' % infos[:5])
#截取从2到6的数据步长为2
print('截取的第四段数据内容:%s' % infos[2:6:2])

执行结果:
在这里插入图片描述

  • 通过分片替换数据
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu','sunliu','zhaoqi','xiaoming']
#以列表形式进行数据替换
infos[2:4] = ['你好啊']
#输出替换的信息
print('替换后的信息:%s' % infos)
#以字符串进行数据替换
infos[2:4] = '我很好啊'
#输出替换信息
print('替换后的内容:%s' % infos)

执行结果:
在这里插入图片描述

注意:如果使用的是以列表形式进行替换会显示一个整体
如果是字符串进行替换,就会将字符串进行分片添加


如果进行有步长操作的替换,就要有相同个数的数据
可以进行空列表的替换

# coding=UTF-8
infos = ['zhangsan','lisi','wangwu','sunliu','zhaoqi','xiaoming']
#进行空的替换相当于删除
infos[2:4] = []
print('替换后的结果:%s' % infos)
#步长的替换
infos[0:3:2] = ['1','2']
print('替换后的内容:%s' % infos)

执行结果:
在这里插入图片描述

四、成员运算符

如果我们要判断某一个数据是否存在列表中,这个时候传统的做法就是进行迭代操作(Python中最愚蠢的做法)

# coding=UTF-8
infos = ['zhangsan','lisi','wangwu','sunliu','zhaoqi','xiaoming']

name = 'sunliu'
flag = False
for item in infos:
	if name == item:
		flag = True
if flag:
	print('数据查找到了')

执行结果:
在这里插入图片描述

  • Python中的专门的运算符

in()、not in()

# coding=UTF-8
infos = ['zhangsan','lisi','wangwu','sunliu','zhaoqi','xiaoming']

name = 'sunliu'
if name in infos:
	print('数据可以查找到!')
else:
	print('没有匹配结果!')

执行结果:
在这里插入图片描述

五、列表的操作函数

  • 容量的修改 :append()、insert()、remove()、pop()、extend()、del
# coding=UTF-8
infos = []
print('初始化的列表长度:%d' % len(infos))
infos.append('张三')
infos.insert(0,'李四')
print('追加后的列表长度:%d,列表的内容:%s' % (len(infos),infos))

执行结果:
在这里插入图片描述

append()函数是在列表的最后进行数据的追加的,而insert()是在指定的索引位置上进行添加的,添加后其它数据向后移动

# coding=UTF-8
infos = []
print('初始化的列表长度:%d,地址:%d' % (len(infos),id(infos)))
infos.append('张三')
infos.insert(0,'李四')
print('追加后的列表长度:%d,列表的内容:%s,列表的地址:%d' % (len(infos),infos,id(infos)))
infos.extend(['王五','孙六'])
print('再次追加后的列表长度:%d,列表的内容:%s,列表的地址:%d' % (len(infos),infos,id(infos)))

执行结果:
在这里插入图片描述

在列表扩充的操作里边确实是在一个内存空间中来完成的


列表的copy()操作

# coding=UTF-8
infos = ['zhangsan','lisi','wangwu']
msg = infos.copy()
print('infos列表的地址:%d,列表的内容:%s' % (id(infos),infos))
print('msg列表的地址:%d,列表的内容:%s' % (id(msg),msg))

执行结果:
在这里插入图片描述


列表的删除操作

remove()函数是根据内容进行删除的

# coding=UTF-8
infos = ['zhangsan','lisi','wangwu']
print('数据删除之前的内容:%s' % infos)
if 'lisi' in infos:
	infos.remove('lisi')
	print('数据删除后的内容:%s' % infos)

执行结果:
在这里插入图片描述

del可以根据索引来删除数据

# coding=UTF-8
infos = ['zhangsan','lisi','wangwu']
print('数据删除之前的内容:%s' % infos)

del infos[2]
print('数据删除后的内容:%s' % infos)

执行结果:
在这里插入图片描述


根据索引删除数据pop()函数

# coding=UTF-8
infos = ['zhangsan','lisi','wangwu']
print('数据删除之前的内容:%s' % infos)

infos.pop(2)
print('数据删除后的内容:%s' % infos)

执行结果:
在这里插入图片描述

  • 数据处理函数:reverse()、sort()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值