python数据结构的列表_Python数据结构之列表
一,数据结构的概念
数据结构是通过某种方式组织在一起的数据集合,这些数据元素可以是数字或者字符,甚至可以是其他的数据结构。
Python中最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号——元素位置,称为索引,第一个索引为0,第二个为1,以此类推,最后的索引位为-1.
二,序列操作
序列的操作包括:索引,分片,加,乘,检查某个元素是否属于序列成员。Python还可以计算序列长度,找出最大值max()方法,最小值min()方法。同时还可对序列进行迭代iter方法。迭代的意思就是可以对序列中的元素重复执行某些操作。
1,索引
我们可以根据索引的位置来取数据,使用负数时,可以从列表倒序取出数据。
列表的索引
data=["list","string","dict","tuple"]#使用索引取出对应数值,Python默认0位为第一位,所以使用索引1返回列表第二个数值
print(data[1])
运行结果为string#使用负数取末尾值
print(data[-1])
运行结果为tuple
2,分片
分片操作可以取出范围内的数据,使用冒号隔开两个索引来进行操作。分片操作有一个很形象的比喻:顾头不顾尾,意思就是我们两个索引位,只包含第一个索引位,第二个索引位不在分片区内
#列表的分片操作
data=["list","string","dict","tuple"]#分片操作取出前三个数据
print(data[0:3])
运行结果:['list', 'string', 'dict']#取出全部数据
print(data[:])
运行结果:['list', 'string', 'dict', 'tuple']#负数取值应注意,左边索引位要比右边索引位小,按从小到大的方式
print(data[-3:-1])
运行结果:['string', 'dict']#可以使用步长取值
print(data[0:3:2])
运行结果:['list', 'dict']#倒序取值时,要注意步长应使用负数,且不能为0
print(data[3:1:-1])
运行结果:['tuple', 'dict']
"对于一个正数步长,Python会从头开始向右取值,直到最后一个元素。对于一个负数步长,则是从序列的尾部开始向左取值,直到元素的第一个元素"
3,序列的加乘操作
使用加操作可以使两个列表连接到一起,需要注意的是,在使用加操作的时候左右两边的数据必须是同一类型,不同类型的数据不能进行连接操作。
#列表的连接操作
data=["list","string","dict","tuple"]
data1=[0,1,2,3]
data3="hello world"
#列表的加操作,连接两个列表、
print(data+data1)
运行结果:['list', 'string', 'dict', 'tuple', 0, 1, 2, 3]#测试列表可以与不同类型的值相连接
print(data+data3)
运行结果:TypeError: can only concatenate list (not "str") to list
列表的乘操作
print(data*3)
运行结果:
['list', 'string', 'dict', 'tuple', 'list', 'string', 'dict', 'tuple', 'list', 'string', 'dict', 'tuple']
三,列表
1,list函数
使用list函数可以改变一些数据的数据类型:例如字符串,元组等
#使用list函数转变数据类型
data="hello world"
print(list(data))
运行结果:
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
2,列表元素赋值
列表的元素赋值使用索引号进行修改,需要注意,我们不能为一个不存在的索引号赋值
列表的赋值操作
data=["list","string","dict","tuple"]print(data)
data[-1]="value"
print(data)
运行结果
原列表内容:['list', 'string', 'dict', 'tuple']
修改后内容:['list', 'string', 'dict', 'value']
列表元素分片赋值操作,分片操作可以给一个空列表赋值,也可以为列表做分片替换
#分片赋值
data=["list","string","dict","tuple","int"]
data[:2]=["list1","string1"]print(data)
运行结果:
['list1', 'string1', 'dict', 'tuple', 'int']#使用分片赋值的原理,对列表进行删除元素操作
data=["list","string","dict","tuple","int"]#data[:]表示列表所有元素
data[:]=[]print(data)
运行结果 : []空列表
2,删除列表元素
删除列表元素使用del关键字加索引号进行操作,索引号超出列表范围将报错
#删除列表元素操作,使用del关键字
data=["list","string","dict","tuple"]print(data)del data[1]print(data)
运行结果
原列表内容:['list', 'string', 'dict', 'tuple']
删除后内容:['list', 'dict', 'tuple']
3,列表操作
1,append
此方法用于别表末尾添加值,它操作后的列表不是一个修改过的新列表(类似拷贝的原理,会有专门内容介绍),而是返回一个修改过的原列表。
#append方法
data=["list","string","dict","tuple","int"]print(data)
data.append("float")print(data)
原列表内容:['list', 'string', 'dict', 'tuple', 'int']
添加后的内容:['list', 'string', 'dict', 'tuple', 'int', 'float']
2,count
此方法统计某个元素在列表中出现的次数。
#count方法
data=["list","string","dict","tuple","int","int"]print(data.count("int"))
运行结果:2
3.extend
此方法可以在列表末尾一次性添加另一个序列的多个值,可以扩展原列表,而不是复制出一个新列表
#extend
data=["list","string","dict","tuple","int"]
data2=["list1","string1"]print(data)
data.extend(data2)print(data)
运行结果:
原data列表:['list', 'string', 'dict', 'tuple', 'int']
扩展后data列表:['list', 'string', 'dict', 'tuple', 'int', 'list1', 'string1']
此方法对比列表连接操作的不同,连接操作不会在原有列表上进行扩展,只会创建一个新的列表。
data=["list","string","dict","tuple","int"]
data2=["list1","string1"]print(data+data2)print(data)
运行结果:
['list', 'string', 'dict', 'tuple', 'int', 'list1', 'string1']
['list', 'string', 'dict', 'tuple', 'int']
从结果可以看出,data列表并没有被覆盖,而是创建了一个新列表
4,index
index方法用于从列表中查找出某个元素第一次匹配成功后的索引位置
#index方法
data=['list', 'string', 'dict', 'tuple', 'int']print(data.index("int"))
运行结果:4 返回一个索引位
5,insert
insert方法用于将对象插入到列表中,插入位置的值会自动向后移位,在添加新值后,原列表后进行扩展操作,原列表将被覆盖。
#insert方法
data=['list', 'string', 'dict', 'tuple', 'int']
data.insert(0,"string")print(data)
运行结果:
['string', 'list', 'string', 'dict', 'tuple', 'int']
6,pop
pop方法,默认删除列表最后一个值,并且返回删除的值,也可以根据索引位删除指定值,且返回被删除数值的值。
此方法配合insert方法可以实现队列操作,使用insert(0)添加值,使用pop(0)删除值,实现一个先进先出的队列,也可以使用append方法,使用pop方法,实现一个先进后出的队列
放入和移出操作就是入栈和出栈,python可以使用append方法进行入栈操作,pop方法模拟出栈操作
#pop方法
data=['list', 'string', 'dict', 'tuple', 'int']print(data.pop())#默认删除最后一个值
print(data.pop(1))#指定删除索引位1的值
运行结果:
int
string
在指定索引位时,不能超出列表长度,否则报错
pop方法是唯一一个既能删除一个值又能返回该元素值的列表方法
一个先进先出队列的实现示例:
#先进先出的队列实现
data=[]for i in range(4):
data.insert(0,i)print(data)print(data.pop(0))print(data)
运行结果:
添加值后的列表 [0]
取出的值 0
取出值后的列表 []
添加值后的列表 [1]
取出的值1取出值后的列表 []
一个先进后出的队列实现:
#先进后出的队列实现
data=[5,]for i in range(2):
data.insert(0,i)print("添加值后的列表",data)print("取出的值",data.pop())print("取出值后的列表",data)
运行结果:
添加值后的列表 [0,5]
取出的值5取出值后的列表 [0]
添加值后的列表 [1, 0]
取出的值 0
取出值后的列表 [1]
7,remove
remove方法用于移除列表中某元素第一个匹配项:它移除后不会返回一个删除元素的值
#remove方法
data=['list', 'string', 'dict', 'tuple', 'int']
data.remove("int")print(data)
运行结果:
['list', 'string', 'dict', 'tuple']
8,reverse
reverse方法将列表中的元素反向存放,要想取值,使用reversed,此方法返回一个迭代器
#reverse
data=[1,2,3,4,5]print(data.reverse())
redata=data.reverse()#测试后,reverse没有返回值
print(redata)#要想取得返回值,使用reserved,返回一个迭代器
a=reversed(data)print(a)#
for i ina:print(i)
9,sort
sort方法用于在原位置对列表进行排序,会改变原列表,是列表元素按一定顺序排列。这个方法总是产生一个列表,所以他可以对任何序列进行操作排序
#sort
data=[2,5,7,8,5,3,1,4]
data.sort()print(data)
运行结果:
[1, 2, 3, 4, 5, 5, 7, 8]
sort方法没有返回值,它会改变原列表的值的顺序。
列表的使用就到这里,到后边会介绍列表生成式,和列表推导式的使用
python数据结构的列表_Python数据结构之列表相关推荐
- python数据结构算法优势_Python数据结构与算法(一)----- 算法效率
一.引入 先来看一道题: 如果a+b+c=1000, 且a2+b2=c^2(a,b,c为自然数),如何求出所有a,b,c可能的组合? (1) 枚举法 import time start_time = ...
- python元祖用法_Python序列(列表list和元组tuple)用法完全攻略
所谓序列,指的是一种包含多项数据的数据结构,序列包含的多个数据项(也叫成员)按顺序排列,可通过索引来访问成员. Python 的常见序列类型包括字符串.列表和元组.前一章介绍过的字符串,其实就是一种常 ...
- python随机生成无序列表_python实现无序列表:链表
介绍链表前我们先了解下什么是列表. 在对基本数据结构的讨论中,我们使用 Python 列表来实现所呈现的抽象数据类型.列表是一个强大但简单的收集机制,为程序员提供了各种各样的操作.然而,不是所有的编程 ...
- python 定义list长度_python中list列表的高级函数 python如何统计列表的长度
在python的函数中,如何将列表list的一部分作为函比如定义个函数,想实现的功能就是将列表a的后半部分(['c','d'])传入后面paraTestList(a[2:])中,括号里面的a[2:]命 ...
- python生成1到10的列表_python笔记10_列表
主要内容: 小目标:掌握列表相关知识点 主要内容:列表添加,删除,遍历 如果看完这篇文章,你还是弄不明白列表相关方法: 你来找我,我保证不打你,我给你发100的大红包. 1.列表基础 列表形式:[it ...
- python最新版本 效率_Python:迭代列表与dict项目效率
这取决于您使用的是哪个版本的Python.在Python 2中,some_dict.items()创建一个新列表,这会占用一些额外的时间并占用额外的内存.另一方面,一旦创建了列表,它就是一个列表,因此 ...
- python中的for语句涉及的序列可以是列表_Python中的列表与循环
文章中的所有例子全部经过实际测试,可以直接使用.开发环境是python 3.8.5 条件和循环 本章的主要内容是Python的条件和循环语句.主要涉及if.else.elif.while.for.ra ...
- python实战经典例子_Python基础之列表常见操作经典实例详解
本文实例讲述了Python基础之列表常见操作.分享给大家供大家参考,具体如下: Python中的列表操作 列表是Python中使用最频繁的数据类型[可以说没有之一] 一组有序项目的集合 可变的数据类型 ...
- python怎么清除代码_Python如何清空列表?清空列表的4种方法(代码示例)
通过Python语言提供的不同构造的方法可以有许多方法来清空列表,下面本篇文章就来给带大家介绍Python中4种清空列表的方法,希望对大家有所帮助. 方法1:重新初始化列表 可以重初始化列表,初始化该 ...
最新文章
- awstats 安装
- codeforces 665B Shopping
- Ubuntu下装QQ2014(http://my.oschina.net/oscfox/blog/315951)
- 天谕手游与奥特曼联手,玩家看到有多么激动?
- 搭建解析内网 linux_Linux 搭建ngrok内网穿透
- Faster-rcnn详解
- 驯服 Tiger: 并发集合
- object-c 中括号[]
- PyTorch中hook函数的学习笔记
- linux常用命令速查手册
- Multiple commands produce xxxxxxxxxx app/Info.plist':
- 定位相关MATLAB仿真代码与在线MATLAB仿真平台
- VoLTE业务端到端流程:EPC侧信令流程
- python 请在微信客户端打开链接-怎么转发微信聊天记录-我用 Python 破解了微信聊天记录,自动同步微信文章...
- SqlServer安装Northwind数据库的通用方法
- 基于用户行为分析建立用户偏好模型
- 拼多多API分享:抓取拼多多商品详情页数据
- 从“贫民窟”里走出来的亿万富豪
- 计算机实验adda转换心得体会,dsp实验ADDA
- ssm毕设项目水果生鲜销售系统7826c(java+VUE+Mybatis+Maven+Mysql+sprnig)
热门文章
- 为什么-1的补码是全1(11111111)?-128的补码是10000000?
- 计算机网络实验思考题汇总
- 编写Thymeleaf视图以展示数据
- java 清空jframe_java – 在新游戏中清除我的JFrame和JPanel
- 地图下面的标尺是什么意思_房屋产权70年产权吧,下面的使用年限是什么意思?...
- rocketmq 消息 自定义_rocketMq-Topic创建过程
- bilibili有电脑版吗_虚充制冷剂、谎称电脑版故障...空调维修的这些套路,你 中招了吗...
- ctb伺服驱动器说明书_青岛FANUC伺服电机364、453故障维修
- ofstream、ifstream、fstream
- 使用VC 2010制作和使用静态库