列表
变量只能存储一个元素,而列表相当于一个“大容器”,可以存储多个元素(元素的类型不限),这样程序就可以对列表中的元素进行整体操作。
列表就相当于其他语言的数组。
列表图示:lst=[10,20,"笑猫","rubbish",36]
0 1 2 3 4 索引
10 | 20 | "笑猫" | "rubbish" | 36 |
-5 -4 -3 -2 -1 索引
#变量存储实际就是变量的一个引用,列表是对多个元素的引用
lst=[10,20,"笑猫","rubbish",36]
print(id(lst))
print(type(lst))
print(lst)
![](https://i-blog.csdnimg.cn/blog_migrate/624ebd2ddc95f05a002ce88df8bb5699.png)
列表的创建
第一种使用“[ ]”
第二种使用内置函数list()
lst1=[10,20,"笑猫","rubbish",36] #使用“[]”进行创建
lst2=list([10,20,"笑猫","rubbish",36]) #使用内置函数list()进行创建
列表的特点
(1)列表中数据按顺序排列
(2)列表中的允许出现重复值,允许嵌套存储
(3)存储数据类型任意
(4)列表的元素用"[ ]"包裹,每个元素之间用","间隔开。
(5)根据需要可以动态的分配与回收内存
列表的查询
索引值的获取:index(目标元素,start,stop)
如果你查找的元素不在此列表中,则会抛出一个"ValueError"错误
lst=[10,20,"笑猫","rubbish",36,10]
print(lst.index(10)) #获取数据为10的索引值,若是有重复的数据,返回值为最小索引值
print(lst.index("rubbish",1,5)) #从第2个元素(lst[1])开始到第五个元素(lst[4])之间寻找数据“rubbish”的索引值。 查找范围类似 [start,stop)
获取列表中的单个元素
lst=[10,20,"笑猫","rubbish",36]
print(lst)
print(lst[2])
print(lst[-1])
![](https://i-blog.csdnimg.cn/blog_migrate/9dc61b4199960f751d8caa7553cd9b19.png)
获取列表中的多个元素-->切片操作:他是对原列表片段的一个拷贝,生成一个新的列表
语法格式:
列表名[start : stop : step ]
lst=[10,20,"笑猫","rubbish",36]
print(lst[0:4:2]) #从第一个元素到第四个元素之间,以每两步为基准计算切片
print(lst[::2]) #从第一个元素到最后一个元素之间,以每两步为基准计算切片
print(lst[1::2]) #从第二个元素到最后一个元素之间,以每两步为基准计算切片
print(lst[:3:2]) #从第一元素到第三个元素之间,以每两步为基准计算切片
print(lst[::-1]) #从第一个元素到最后一个元素之间,以逆向的方式查找获取元素(当step为负数时,列表的最后一个元素为start,列表的第一个元素为stop,从start开始往前计算切片)
![](https://i-blog.csdnimg.cn/blog_migrate/9519a1474fe724b038dc4d38367ae510.png)
判断指定元素在列表中是否存在
元素 in 列表名
元素 not in 列表名
lst=[10,20,"笑猫","rubbish",36]
10 in lst
"hudgs" not in lst
![](https://i-blog.csdnimg.cn/blog_migrate/6511d567d9f6b035322358dffdd0b514.png)
列表元素的遍历
操作:for 迭代变量 in 列表名 :
lst=[10,20,"笑猫","rubbish",36]
for item in lst :
print(item)
![](https://i-blog.csdnimg.cn/blog_migrate/07cb06687cfcea7d0a79a9c4ae033d8a.png)
列表元素的增加操作
在列表末尾直接增加一个元素: append()
lst=[10,20,"笑猫","rubbish",36]
lst2=["fighting","python"]
lst.append("carrot") #在列表末尾直接增加一个元素
lst.append(lst2) #添加的列表lst2,也是以一个元素的形式添加在lst列表当中
![](https://i-blog.csdnimg.cn/blog_migrate/d0c5c9eab8d8034d8e4d882f65f10dfb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1ac1603915017587b1974c72a561e6c0.png)
在列表末尾中增加多个元素:extend()
lst=[10,20,"笑猫","rubbish",36]
lst2=["fighting","python"]
lst.extend(lst2) #在列表末尾中以多个元素的形式进行添加
![](https://i-blog.csdnimg.cn/blog_migrate/ff01c356a4a3761e7556170136cc81bf.png)
在列表任意位置增加一个元素: insert()
lst=[10,20,"笑猫","rubbish",36]
lst.insert(1,50) #在列表lst第二个位置插入元素50
![](https://i-blog.csdnimg.cn/blog_migrate/91b6476fa2973298d010c3de03050da9.png)
在列表任意位置增加多个元素: 切片
#在任意位置增加任意元素-->切片
lst1=[11,22,33,44]
lst2=["one","two","three","four"]
lst1[1:]=lst2 #将列表lst1切片,将切掉的部分的位置以lst2代替
print(lst1)
![](https://i-blog.csdnimg.cn/blog_migrate/da5f334e865fbb3358bc13ca72672f64.png)
列表元素的删除操作
remove():一次删除一个元素,重复元素只删除第一个,删除不存在元素抛出ValueError错误
pop():删除指定位置上的元素,不指定索引删除列表最后一个元素
lst=[10,30,40,50,"carrot","rabbit"]
lst.pop(2)
print(lst)
![](https://i-blog.csdnimg.cn/blog_migrate/06e8e8eed26e6e22f138e31e9e2ab750.png)
切片:一次至少删除一个元素
lst=[10,30,40,50,"carrot","rabbit"]
lst2=lst[1:3] #切片会产生一个新的列表,原列表不会发生改变
print(lst)
print(lst2)
![](https://i-blog.csdnimg.cn/blog_migrate/bf56fea1f8b2e56554df9b23df0c7264.png)
clear():清空列元素
del:删除列表
列表元素的修改
指定索引元素赋一个新值
lst1=[10,20,30,40,50,60]
lst1[2]=100
print(lst1)
![](https://i-blog.csdnimg.cn/blog_migrate/33fbd77cef83b877f3d22a7fba98b4f0.png)
指定切片赋予新值
lst1=[10,20,30,40,50,60]
lst2=[222,333,444,555,666,777]
lst1[2:4]=lst2 #将lst1从第三个元素到第五个元素(但不包含第五个元素)切去,切去部分由lst2代替
print(lst1)
![](https://i-blog.csdnimg.cn/blog_migrate/d541975256ea94523de69e505820bd5f.png)
列表元素的排序
调用sort()函数:将列表中的元素从小到大的顺序进行排序,在原列表上进的排序
reserve():将列表中的元素进行逆序排列,在原列表上进的排序
使用内置函数sorted()会产生新的列表。
lst=[30,5,6,20,12,15,9]
lst.reverse() #将列表lst中的元素进行了逆序排序,并未进行元素的降序排序
print(lst)
lst.sort()
print(lst)
lst.reverse() #当原列表中的各元素不是以升序存储时,只有在调用了sort()函数,进行了元素升序排序之后,使用reverse()才会得到降序排序
print(lst)
#sorted()内置函数
lst=[30,5,6,20,12,15,9]
lst1=sorted(lst)
print(lst)
print(lst1)
![](https://i-blog.csdnimg.cn/blog_migrate/95c3f2c32814ba27b41d17a018a8b58f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/78f6cb39449ade115e3c6f7478fa2433.png)
![](https://i-blog.csdnimg.cn/blog_migrate/124fa905d519c2e2106e987863a7302e.png)
列表推导式
列表的生成 : 列表名=[表达式 for 目标对象 in 迭代对象]
lst=[ i*i for i in range(1,7)]
![](https://i-blog.csdnimg.cn/blog_migrate/5b08b7ea411d4fc100a31f604cd533de.png)
也可以用列表推导式进行循环的遍历,减少代码量,增加执行效率
lst1 = [2,4,6,8,10]
lst2 = [i*2 for i in lst]
print(lst1)
print(lst2)
![](https://i-blog.csdnimg.cn/blog_migrate/195c8230e3bffe9e4f75e5285eedda78.png)
列表推导式也可以后跟if语句进行条件约束
lst=[i+3 for i in range(1,21) if i%5==0]
print(lst)
![](https://i-blog.csdnimg.cn/blog_migrate/4a6d8acea7a0b5b3416a01eeaa35a264.png)
若有问题,敬请指正!