一,数据结构的概念

数据结构是通过某种方式组织在一起的数据集合,这些数据元素可以是数字或者字符,甚至可以是其他的数据结构。

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数据结构之列表相关推荐

  1. python数据结构算法优势_Python数据结构与算法(一)----- 算法效率

    一.引入 先来看一道题: 如果a+b+c=1000, 且a2+b2=c^2(a,b,c为自然数),如何求出所有a,b,c可能的组合? (1) 枚举法 import time start_time = ...

  2. python元祖用法_Python序列(列表list和元组tuple)用法完全攻略

    所谓序列,指的是一种包含多项数据的数据结构,序列包含的多个数据项(也叫成员)按顺序排列,可通过索引来访问成员. Python 的常见序列类型包括字符串.列表和元组.前一章介绍过的字符串,其实就是一种常 ...

  3. python随机生成无序列表_python实现无序列表:链表

    介绍链表前我们先了解下什么是列表. 在对基本数据结构的讨论中,我们使用 Python 列表来实现所呈现的抽象数据类型.列表是一个强大但简单的收集机制,为程序员提供了各种各样的操作.然而,不是所有的编程 ...

  4. python 定义list长度_python中list列表的高级函数 python如何统计列表的长度

    在python的函数中,如何将列表list的一部分作为函比如定义个函数,想实现的功能就是将列表a的后半部分(['c','d'])传入后面paraTestList(a[2:])中,括号里面的a[2:]命 ...

  5. python生成1到10的列表_python笔记10_列表

    主要内容: 小目标:掌握列表相关知识点 主要内容:列表添加,删除,遍历 如果看完这篇文章,你还是弄不明白列表相关方法: 你来找我,我保证不打你,我给你发100的大红包. 1.列表基础 列表形式:[it ...

  6. python最新版本 效率_Python:迭代列表与dict项目效率

    这取决于您使用的是哪个版本的Python.在Python 2中,some_dict.items()创建一个新列表,这会占用一些额外的时间并占用额外的内存.另一方面,一旦创建了列表,它就是一个列表,因此 ...

  7. python中的for语句涉及的序列可以是列表_Python中的列表与循环

    文章中的所有例子全部经过实际测试,可以直接使用.开发环境是python 3.8.5 条件和循环 本章的主要内容是Python的条件和循环语句.主要涉及if.else.elif.while.for.ra ...

  8. python实战经典例子_Python基础之列表常见操作经典实例详解

    本文实例讲述了Python基础之列表常见操作.分享给大家供大家参考,具体如下: Python中的列表操作 列表是Python中使用最频繁的数据类型[可以说没有之一] 一组有序项目的集合 可变的数据类型 ...

  9. python怎么清除代码_Python如何清空列表?清空列表的4种方法(代码示例)

    通过Python语言提供的不同构造的方法可以有许多方法来清空列表,下面本篇文章就来给带大家介绍Python中4种清空列表的方法,希望对大家有所帮助. 方法1:重新初始化列表 可以重初始化列表,初始化该 ...

最新文章

  1. awstats 安装
  2. codeforces 665B Shopping
  3. Ubuntu下装QQ2014(http://my.oschina.net/oscfox/blog/315951)
  4. 天谕手游与奥特曼联手,玩家看到有多么激动?
  5. 搭建解析内网 linux_Linux 搭建ngrok内网穿透
  6. Faster-rcnn详解
  7. 驯服 Tiger: 并发集合
  8. object-c 中括号[]
  9. PyTorch中hook函数的学习笔记
  10. linux常用命令速查手册
  11. Multiple commands produce xxxxxxxxxx app/Info.plist':
  12. 定位相关MATLAB仿真代码与在线MATLAB仿真平台
  13. VoLTE业务端到端流程:EPC侧信令流程
  14. python 请在微信客户端打开链接-怎么转发微信聊天记录-我用 Python 破解了微信聊天记录,自动同步微信文章...
  15. SqlServer安装Northwind数据库的通用方法
  16. 基于用户行为分析建立用户偏好模型
  17. 拼多多API分享:抓取拼多多商品详情页数据
  18. 从“贫民窟”里走出来的亿万富豪
  19. 计算机实验adda转换心得体会,dsp实验ADDA
  20. ssm毕设项目水果生鲜销售系统7826c(java+VUE+Mybatis+Maven+Mysql+sprnig)

热门文章

  1. 为什么-1的补码是全1(11111111)?-128的补码是10000000?
  2. 计算机网络实验思考题汇总
  3. 编写Thymeleaf视图以展示数据
  4. java 清空jframe_java – 在新游戏中清除我的JFrame和JPanel
  5. 地图下面的标尺是什么意思_房屋产权70年产权吧,下面的使用年限是什么意思?...
  6. rocketmq 消息 自定义_rocketMq-Topic创建过程
  7. bilibili有电脑版吗_虚充制冷剂、谎称电脑版故障...空调维修的这些套路,你 中招了吗...
  8. ctb伺服驱动器说明书_青岛FANUC伺服电机364、453故障维修
  9. ofstream、ifstream、fstream
  10. 使用VC 2010制作和使用静态库