Python数据结构之列表

h2 { background-color: green }
h3 { color: green }

一,数据结构的概念

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

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)#<list_reverseiterator object at 0x0000026DAA7FCB70>
for i in a:
    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方法没有返回值,它会改变原列表的值的顺序。

列表的使用就到这里,到后边会介绍列表生成式,和列表推导式的使用

时间: 2024-12-18 14:29:15

Python数据结构之列表的相关文章

Python数据结构——散列表

散列表的实现常常叫做散列(hashing).散列仅支持INSERT,SEARCH和DELETE操作,都是在常数平均时间执行的.需要元素间任何排序信息的操作将不会得到有效的支持. 散列表是普通数组概念的推广.如果空间允许,可以提供一个数组,为每个可能的关键字保留一个位置,就可以运用直接寻址技术. 当实际存储的关键字比可能的关键字总数较小时,采用散列表就比较直接寻址更为有效.在散列表中,不是直接把关键字用作数组下标,而是根据关键字计算出下标,这种 关键字与下标之间的映射就叫做散列函数. 1.散列函数

python数据结构之 列表和元组

python数据结构之 列表和元组 序列:序列是一种数据结构,它包含的元素都进行了编号(从0开始).典型的序列包括列表.字符串和元组.其中,列表是可变的(可以进行修改),而元组和字符串是不可变的(一旦创建了就是固定的).序列中包含6种内建的序列,包括列表.元组.字符串.Unicode字符串.buffer对象.xrange对象. 列表的声明: mylist = [] 2.列表的操作: (1) 序列的分片: 用法:mylist[startIndex:endIndex:step] exam: myli

Python数据结构:列表、元组和字典

在Python中有三种内建的数据结构——列表list.元组tuple和字典dict 列表中的项目包括在方括号中,项目之间用逗号分割 元组和列表十分类似,只不过元组和字符串一样是不可变的 即你不能修改元组.元组通过圆括号中用逗号分割的项目定义. 元组最通常的用法是用在打印语句中 age = 22 name = 'Swaroop' print '%s is %d years old' % (name, age) print 'Why is %s playing with that python?'

Python数据结构之列表类型(list)

数据结构之列表类型(list) 列表说明 增加元素到列表 删除列表元素 更改列表元素 查看列表元素 列表脚本操作符 列表截取与拼接 嵌套列表 列表内置函数 一.列表说明 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片,加,乘,检查成员. Python已经内置确定序列的长度以及确定最大和最小的元素的方法 列表的数据项

Python数据结构之列表、元组及字典

一位大牛Niklaus Wirth曾有一本书,名为<Algorithms+Data Structures=Programs>,翻译过来也就是算法+数据结构=程序.而本文就是介绍一下Python中内建的三种数据结构----列表.元组以及字典. 列表 列表是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目. 1.list函数 因为字符串不能像列表一样被修改,所以有时候根据字符串创建列表就很有用了,list可以实现这个操作: 1 >>>list("H

python 数据结构之-列表

在Python中有三种内建的数据结构--列表.元组和字典.我们将会学习如何使用它们,以及它们如何使编程变得简单. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了.只不过在你的购物表上,可能每样东西都独自占有一行,而在Python中,你在每个项目之间用逗号分割.  列表中的项目应该包括在方括号中,这样Python就知道你是在指明一个列表.一旦你创建了一个列表,你可以添加.删除或是搜索列表中的项

Python数据结构之列表元组字典的用法

数据结构的含义 在学习数据结构之前,我们先来了解下数据结构的含义.数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在Python语言中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序号----即元素的位置,称为索引或下标,索引从0开始递增. 典型的序列包括列表.元组和字符串.其中,列表是可变的(可修改),而元组和字符串是不可变的(一旦创建了就是固定的).列表.元组和字符串也是较常用的数据结构

Python数据结构:列表、字典、元组、集合

列表:shoplist = ['apple', 'mango', 'carrot', 'banana']字典:di = {'a':123,'b':'something'}集合:jihe = {'apple','pear','apple'}元组: t = 123,456,'hello' 1.列表--------------------------------------------------------------------------------------    空列表:a=[]    函

python 数据结构之列表操作

lt = [1, 2, 3, 4, 5] #列表取值与切片 #切片规则与字符串相同 print(lt[0])#1 print(lt[-1])#5 print(lt[1:3])#[2, 3] print(len(lt))#列表长度5 # 修改元素 lt[0] = 100 print(lt)#[100, 2, 3, 4, 5] # 追加元素,将传递的元素作为一个整体(一个元素)追加到列表尾部 lt.append(200) print(lt)#添加的新元素一般放在列表末端[100, 2, 3, 4,