python学习——列表

一、列表介绍
可以将列表视作一个容器,里面可以存储多个元素。这些元素可以是不同的数据类型。
二、列表的操作
2.1.列表的创建
方式一:使用中括号[]进行列表的创建,元素之间使用英文的逗号隔开。例如
在这里插入图片描述
在上图中,lst1是列表对象名,=就是赋值号,后面就是利用中括号创建列表的方式。
方式二:使用内置函数list(),根据内置函数创建完成之后,再赋给列表对象进行应用。
在这里插入图片描述
2.2.列表的特点
(1)有序排序,print输出的时候是按照列表元素的顺序进行输出的。
在这里插入图片描述
在这里插入图片描述
(2)列表中的元素是通过索引获取的,那么索引映射唯一的数据。从前往后是正索引,从后往前是负索引,正索引是从0开始的,负索引是从-1开始的。
在这里插入图片描述在这里插入图片描述
(3)列表可以存储重复的数据
在这里插入图片描述
在这里插入图片描述
(4)任意的数据类型都可以存储在列表中
(5)列表是根据需要动态分配和回收内存的。也就是说会根据列表中元素的多少动态分配内存
2.3.列表查询
2.3.1获取列表中指定元素的索引
(1)利用index获取列表中指定元素的索引,在这种方法中,如果列表中存在相同的元素,那么返回的索引值是这些相同元素中第一个元素的索引。
在这里插入图片描述在这里插入图片描述
(2)如果列表中的元素不存在,那么就会输出ValueError.
在这里插入图片描述
在这里插入图片描述

(3)还可以在指定的范围内进行查找。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.3.2获取列表中的单个元素
在前面的2.3.1部分讲了由元素根据index获取索引,现在本部分讲由索引去获取列表中的元素。
(1)正向索引是从0到N-1的。
(2)逆向索引是从-N到-1的。
(3)指定索引不存在,报错IndexError
如下图所示
在这里插入图片描述
运行结果在这里插入图片描述
2.4.列表的切片操作
切出来的列表是一个新的列表,最后切片的结果就是原列表中片段的拷贝。
一般表示形式

列表名[start:stop:step]

其中,start和stop确定了切片的范围,切片区间一般是左闭右开,一般情况下步长也就是step默认为1,step为正整数或者是负整数。
(1)step为正数,那么是从start开始往后计算切片。

[:stop:step]

在这种情况下切片的第一个元素默认是列表的第一个元素

[start::step]

在这种情况下切片的最后一个元素默认是列表的最后一个元素
例如

#建立一个列表
lst = [0,1,2,3,4,5,6,7,8,9]
#列表切片,列表名[start:stop:step]

#step为正,前向切片
print(lst[1:6:1])#前向切片,步长为1
print(lst[1:6:2])#前向切片,步长为2
print(lst[:6:1])#前向切片,省略start
print(lst[1::1])#前向切片,省略stop
print(lst[1:6:])#前向切片,默认步长1

运行结果
在这里插入图片描述

(2)step为负数,那么是从start开始往前计算切片。

[:stop:step]

在这种情况下切片的第一个元素默认是列表的最后一个元素

[start::step]

在这种情况下切片的最后一个元素默认是列表的第一个元素
例如

#建立一个列表
lst = [0,1,2,3,4,5,6,7,8,9]
#列表切片,列表名[start:stop:step]

#step为负,后向切片
print('原列表:',lst)
print(lst[::-1])#后向切片,省略start和stop
print(lst[8:5:-1])#后向切片,步长为1

print(lst[9:0:-2])#后向切片,步长为2
print(lst[:0:-2])#后向切片,省略start,默认是从列表的最后一个元素开始
print(lst[9::-2])#后向切片,省略stop,默认是到原列表的第一个元素结束

运行结果
在这里插入图片描述

2.5.列表元素的增加
列表元素的增加操作并没有使列表对象发生变化,也就是说仅仅是在原来列表的基础上增加了元素,原来列表的ID值也并未发生改变。
(1)在列表的末尾添加一个元素,append()

lst=[0,1,2,3]
print('初始列表',lst,id(lst))

lst.append(4)
#在列表的末尾添加一个元素
print('添加元素之后的列表lst',id(lst))

运行结果在这里插入图片描述

(2)在列表末尾至少增加一个元素
我们可以先建立新的列表,这个列表中包含所需要添加的一系列元素,再通过扩展的方式进行元素添加,extend()。

#在列表末尾添加一个列表
lst1=[4,5,6,7,'hello','world']
lst.extend(lst1)
print('添加元素之后的列表1',lst,id(lst))

运行结果
在这里插入图片描述
(3)在列表的任意位置添加一个元素,insert()
比如这里,在列表的第一个位置上添加元素hello。

lst=[0,1,2,3]
print('初始列表',lst,id(lst))
#在列表的任意位置添加一个元素
lst.insert(1,'hello')
print('插入元素之后的列表',lst,id(lst))

运行结果
在这里插入图片描述
(4)列表元素的切片操作,先切片后替换,例如

lst=[0,1,2,3]
print('初始列表',lst,id(lst))
#在列表的任意位置添加一个元素
lst1=['hello','world','wuliwuli',100]
lst[1:]=lst1  #表示从1开始切片,索引为1以及索引大于1的元素将被新的列表替换
print('切片',lst,id(lst))

运行结果
在这里插入图片描述
2.6.列表元素的删除
(1)remove()——针对元素
①一次删除一个元素

lst=[0,1,2,3]
print('初始列表',lst,id(lst))
#remove(),一次删除一个元素
lst.remove(1)
print('删除一个元素后的列表',lst,id(lst))

运行结果
在这里插入图片描述
②重复元素只删除第一个

lst=[0,1,2,3,3,3]
print('初始列表',lst,id(lst))
#remove(),相同元素只移除一个
lst.remove(3)
print('相同元素只移除一个',lst,id(lst))

运行结果
在这里插入图片描述
③元素不存在抛出ValueError

lst=[0,1,2,3,3,3]
print('初始列表',lst,id(lst))
#remove(),元素不存在,报错
lst.remove(4)
print('所要删除的元素不存在',lst,id(lst))

运行结果
在这里插入图片描述
(2)pop()——针对索引
①删除一个指定索引位置上的元素

lst=[0,1,2,3,3,3]
print('初始列表',lst,id(lst))
#pop(),删除指定索引位置上的元素
lst.pop(0)
print('删除指定索引位置上的元素',lst,id(lst))

运行结果
在这里插入图片描述
②指定索引不存在抛出IndexError

lst=[0,1,2,3,3,3]
print('初始列表',lst,id(lst))
#pop(),索引不存在
lst.pop(6)
print('索引不存在',lst,id(lst))

运行结果
在这里插入图片描述
③不指定索引,则删除列表中的最后一个元素

lst=[0,1,2,3,3,3]
print('初始列表',lst,id(lst))
#pop(),未指定索引
lst.pop()
print('没有指定索引',lst,id(lst))

运行结果
在这里插入图片描述
(3)切片,一次至少删除一个元素
此部分分为产生新的列表和删除原列表中的元素,删除原列表中的元素就相当于拿一个空列表区取代原列表中的元素。

lst=[0,1,2,3,'hello','world']
print('初始列表',lst)

#切片,产生新的列表
newlist=lst[1:4]
print('切片后的列表',newlist)
#切片,不产生新的列表,仅删除原来列表中的内容
lst[1:4]=[]
print('删除列表中的元素',lst)

运行结果
在这里插入图片描述

(4)clear(),对列表进行清空

lst=[0,1,2,3,'hello','world']
print('初始列表',lst)

#对列表进行清空处理
lst.clear()
print(lst)

运行结果
在这里插入图片描述
这里的运行结果是删除列表中所有的元素
(5)del(),删除列表
与clear不同的是,这里的del是删除整个列表

lst=[0,1,2,3,'hello','world']

#删除列表
del lst
print(lst)

运行结果
在这里插入图片描述
删没了,完全找不到

2.7.列表元素的修改
(1)指定索引,更改元素(为指定索引的元素赋予一个新的值)

lst=[0,1,2,3,'hello','world']
print('原列表',lst)
#改列表中的一个元素
lst[5]='python'
print('更改元素后的列表',lst)

运行结果在这里插入图片描述
(2)为指定的切片赋予一个新的值,从而达到修改的目的

lst=[0,1,2,3,'hello','world']
print('原列表',lst)
#赋予切片新的值,进行修改操作
lst[1:3]=[7,8]
print('更改后的列表',lst)

运行结果
在这里插入图片描述
2.8.列表元素的排序操作
对列表元素进行排序操作,并没有改变原来的列表。
(1)调用sort()方法默认按照从小到大的顺序进行排序,也就是升序排序,但也可以指定reverse=True,进行降序操作。

#列表的排序

lst=[409,364,373,383,374,377,406]
print('排序前的列表',lst,id(lst))

#sort,默认升序排序
lst.sort()
print('sort排序后的列表',lst,id(lst))

#通过指定关键字进行降序操作
lst.sort(reverse=True)
print('降序排序后的列表',lst,id(lst))

运行结果在这里插入图片描述
(2)调用内置函数sorted(),可以指定reverse=True,进行降序

#列表的排序

lst=[409,364,373,383,374,377,406]
print('排序前的列表',lst,id(lst))

#内置函数sorted,默认升序
newlist=sorted(lst)
print('默认升序',newlist,id(newlist))

#指定关键字参数,进行降序排序
newlist1=sorted(lst,reverse=True)
print('降序',newlist1,id(newlist1))

运行结果
在这里插入图片描述
可以看到列表的id值发生了变化,也就说这里内置函数排序的方法是产生了新的列表。

2.9.列表生成式
所谓列表生成式就是生成列表的公式

#列表生成式
#例1,产生整数序列生成列表
lst1=[i for i in range(1,10)]
print(lst1)

lst2=[2*i for i in range(1,10)]
print(lst2)

lst3=[i*i for i in range(1,10)]
print(lst3)

例如i,2i,ii,是列表表达式,i是自变量,range是自变量的范围。
运行结果在这里插入图片描述
3.总结
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值