Python的学习-4-列表及其常见操作
列表
列表是一种数据存储方式,用于存储一系列的数据。在内存中,列表就是一块用来存放多个值的连续的内存空间。(相当于数组,但是列表在保存的数据类型上并不严格限制)
列表对象的常用方法
列表的创建
基本语法创建
语法格式:
a = [10,20,'rain','rean']
a = []#创建空列表
list()创建
使用list()可以将任何可迭代的数据转化成列表
语法格式:
a = list()#创建空列表对象
a = list("****",****)
range()创建整数列表
range()函数的参数详解:
#range(start,end,step)
#start:开始下标
#ned:结束下标
#step:可选,步长默认为1
range()函数返回的是一个对象。
推导式
a = [x*2 for x in range(5)]
print(a)
#[0,2,4,6,8]
a = [x*2 for x in range(100) if x%9 == 0]
print(a)
#[0,18,36,54,72,90,108,126,144,162,180,198]
列表元素的增加和删除
列表元素增加
append()方法
append()方法可以原地修改列表对象,速度最快,推荐多使用。
a = []
a.append(10)
print(10)
#[10]
“+” 运算符
不是原地修改,二十创建新的列表对象,将源列表的元素和新列表的元素依次复制到新的列表对象中,会涉及大量的复制操作,操作大量元素时不推荐使用。
a=[]
print(id(a))
a=a+[50]
print(a)
print(id(a))
#[50]
extend()方法
将目标列表的所有元素添加到本列表的尾部,属于原地操作,对比append(),append()对单个元素进行操作,extend()对多个元素进行操作。
a=[]
print(id(a))
a.extend([50,60])
print(id(a))
print(a)
insrt()插入元素
一般用于将指定元素插入到列表对象的任意指定位置,会使所有源列表中位于插入位置之后的元素后移一个位置,是涉及大量元素操作的方法。相似的移动方法还有:remove(),pop(),del()
a=[10,20,30]
a.insert(2,100)
print(a)
#[10,20,100,30]
乘法扩展
使用乘法扩展列表,生成一个新列表,新列表元素是源列表的多次重复。
a=['rain',10]
b=a*2
print(b)
#['rain',10,'rain',10]
列表元素删除
del删除
删除列表指定位置的元素
a=[10,20,30]
del a[0]
print(a)
#[20,30]
pop()方法
pop()删除并返回指定位置元素,如果未指定位置则默认返回列表最后一个位置的元素
a = [10,20,30,40,50]
print(a.pop())
#[50]
print(a)
#[10,20,30,40]
remove()方法
删除首次出现的指定元素,元素不存在则抛出异常
a = [10,20,30,40,50,60,10,20,30]
a.remove(20)
print()
列表元素的访问和计数
通过索引直接访问元素
a = [10,20,30,40]
print(a[0])
index()获得指定元素在列表中首次出现的索引
index(value,start,end)的参数:
value——我们指定的元素
start——搜索范围的开始下标
end——搜索范围的结束下标
a = [10,20,30,40]
print(a.index(20))
count()获得指定元素在列表中的出现次数
a = [10,20,30,40]
print(a.count(20))
len()返回列表长度
len()返回列表长度
a = [10,20,30,40]
print(len(a))
成员资格判断
如果count()返回0,则元素不存在。
还可以用in关键字,也就是成员运算符判断。
切片操作
字符串的切片操作几乎可以运用于列表。
列表排序
修改原列表,不建新列表的排序。
一般可以使用常用的sort()方法。sort()方法是永久性修改
a = [10,20,30,40]
print(id(a))
print(a.sort())#默认升序
print(id(a))
print(a.sort(reverse = True))#降序
import random
random.shuffle(a)#随机排序
建立新列表的排序
内置函数sorted()进行排序
和sort()相比,sorted()函数的排序是临时的,也就是不会对原始列表做出改变,而sort()是永久性的,即会对原始列表做出修改。
a = [10,20,30,40]
print(id(a))
print(a= sorted(a))#默认升序
print(id(a))
print(a = sorted(a,reverse = True))#降序
print(id(a))
reversed()返回迭代器
内置函数reversed()也支持逆序排列,与reverse()方法不同的是,reversed()不对源列表做修改,返回一个逆序排序的迭代器对象。
a = [20,10,30,40]
c = reversed(a)
print(c)#和print(a[::-1])的效果一样
#[40,30,10,20]
print(list(c))#迭代器只能使用一次,使用一次过后,会变空
其他一些常用方法
max(),min(),sum()
max(var)返回最大值
min(var)返回最小值
sum(var)返回所有元素的求和
多维列表
二维列表
二维数组如何理解?可以把二维列表看作一个大的列表,和多个小列表组成。如下列:
a=[
[1,2,3,4],
[10,20,30,40],
['a','b','c','d','e']#多维列表的维度可以不一致。
]
内存结构图: