列表
为什么需要列表:变量可以存储一个元素,而列表是一个大容器可以存储N多个元素,程序可以方便的对这些数据进行整体操作。
列表相当于其他语言中的数组。
列表示意图:
list=[ ]在[ ]这里可以存储N多个对象,构建成一个列表。
列表的创建
1.使用中括号。
2.使用内置函数list()
list1=['hello','552',55,55]
list2=list(['hello','552',55,55])
列表特点:
1.列表元素按顺序有序排列。
2.索引映射唯一个数据。
3.列表可以存储重复数据。
4.任意数据类型可以混存。
5.更具需要动态分配和回收内存。
索引定位唯一元素,顺序从0开开始,逆序从-1开始。
例
list1=['hello','552',55]
list2=list(['hello','552',55])
#我们只输出hello
print(list1[0],list1[-3])#输出结果是hello
列表的查询操作
获取列表中指定元素的索引:index()
当所查询列表中又N多个相同元素,只返回相同元素中的第一个元素的索引。
如果查询的元素在列表中不存在,则会抛出ValueError。
list=['hello','海',55.32,2,'hello']
print(list.index('hello'))#如,结果输出为0,是一个hello的索引。
print(list.index('hello',1,4)
#结果为hello不在列表里,在索引为1--4里找hello,但不包括4.
print(list.index('hello',1,5)
#z这是输出结果为4,是最后一个hello的索引。
获取列表中的单个元素
正向索引0到N-1:list[0]
逆向索引-N到-1:list[-N]
制度索引不存在,抛出indexError
list=['hello','海',55.32,2,'hello']
#如我们想获取索引为3的元素
print(list[3])
#会得到55.32
获取列表中的多个元素
切片操作,语法格式:
列表名 , [start,stop,step]
原列表片段的拷贝。
切片器的范围 , [start,stop)
step默认值为1。
step值为正数:
[:stop:step],切片的第一个元素默认是列表的第一个元素,从start开始往后计算切片。
[start::step],切片的最后一个元素默认是列表最后一个元素,从stat开始往后计算切片。
step值为负数:
[:stop:step],切片第一个元素默认是列表最后一个元素,从start开始往前计算切片。
[start::step],切片的最后一个元素默认是列表第一个元素,从start开始往前计算切片。
list=[10,20,30,40,50,60,70,80,90]
print(list)
#step为正数时
print(list[1:6:1])#此时打印输出的是一个新列表对象
print(list[1:6:])
print(list[1:6])#上三种是步长为1,默认值值为1
print(list[0:9:2])#步长为2
print(list[:9:3])#省略start默认从索引0开始
print(list[1::2])#省略stop默认到最后一个索引结束
#step为负数时
print(list[::-1])#默认start和stop,结果为原逆序
print(list[9::-1])#这个结果与上一个一样逆序,从最后一个算起到
print(list[9:0:-2])#这个不包括0的
判断指定元素在列表中是否存在:
元素 in 列表名
元素not in列表名
列表元素的遍历:
for 迭代变量 in 列表名:
==== 操作====
#列表的遍历
list=[10,20,30,40,50,60,70,80,90]
for i in list:
print(i)
将列表里的元素依次赋值给 i 。
列表元素的增加操作
append()在列表末尾添加一个元素。
extend()在列表末尾至少添加一个元素。
insert()在列表的任意位置添加一个元素。
切片,在列表的任意位置添加至少一个元素。
list=[10,20,30]
list.append(30)
print(list)#在原列表里添加的,没有创建成新的列表对象
list2=[55,60]
list.append(list2)
print(list)#这是会把list2这个列表作为一个元素添加到list中
list.extend(list2)#一次性在列表末尾添加多个元素
print(list)#这时,在list列表末尾扩展,把list2里的每一个元素添加到list中,而不是当做一个整体元素添加进去
list.insert(2,100)#在列表索引为2的位置添加一个元素
print(list)
list3=['hello',5.5,303]
list[4:6]=list3#切片从索引为4--6的元素切掉,替换为新的元素
print(list)
列表元素的删除
remove():一次只移除一个元素;重复元素只移除第一个元素,移除处元素不存在则抛出ValueError。
pop()删除指定位置索引上的一个元素,指定索引不存在抛出IndexError,不指定索引删除列表中最后一个元素。
切片,一次至少删除一个元素,产生一个新的列表对象。
clear()清空列表,把列表里元素清空删除。
del()删除不列表,是整个列表对象都删处。
list1=[10,20,30,40,50,60,30,30,70]
list1.remove(30)#移除了20后面的30
print(list1)
list1.pop(1)#移除了索引为1的元素20
print(list1)
list2=list1[1:3]#把其他索引位置上的元素切除
print(list2)#产生了一个新的列表,原列表改变了
list1[1:3]=[]#把索引为1:3位置上的元素切除用空列表代替
print(list1)#这时还是在原列表
list1.clear()#清空列表里的所有元素
print(list1)
del list1#把整个列表删除
print(list1)#程序报错,列表已经不存在了
列表元素的修改
指定一个索引元素,赋予一个新值。
指定切片赋予一个新值。
list=[10,20,30,40]
list[3]=100#把索引为3的元素改成100
print(list)
list[1:3]=[11,200,666,356]#把索引1:3的元素替换为这些
print(list)
列表元素的排序操作
调用sort()方法,列表中所有元素默认reverse=False按从小到大排序,可指定reverse=True进行降序排序,在原列表进行排序没有创建新的列表。
调用内置函数sorted(),可以指定reverse=True,按降序排列,产生一个新的列表对象,原列表没有变化。
list=[150,5,506,30,66,68]
list.sort()#将列表按从小到大排序,列表还是原列表没有创建新的列表对象,只是在原列表了进行排序。
print(list)
list.sort(reverse=True)#此时列表按降序排列
print(list)
list1=sorted(list)#进行牲畜排列,创建了一个新列表进行排序,原列表没有改变。
print(list1)
列表生成式
list=[i for i in range(1,10,2)]
print(list)
list1=[i+2 for i in range(1,4)]
print(list1)
for前的是列表要输出的对象。