python学习笔记(二)——探究列表的详细操作

list列表,python中最常用最重要的数据类型,熟练掌握列表的使用对于python的学习至关重要
本文中的列表实例都是用lst来代替

1.列表的创建

通常使用中括号[],或者list()来创建列表,这个不多说了,列表中的元素可以是任何元素,数值,字符串,甚至嵌套的列表,字典,集合,元组都可以

lst=[1,'abc',['a','b'],(1,'a'),{'a':1},{1,'a'}]
print(type(lst))
#out:	<class 'list'>

2.列表的查、修、增、删

2.1查找与修改

利用下标索引进行查找,正向索引从0开始,逆向索引从-1开始。修改直接覆盖。

lst=[1,2,3,'a','b','c']
print(lst[0],lst[-1])       #用索引直接正向逆向查找
#out:	0 c
lst[1]='second'             #索引直接修改元素,修改原列表
print(lst)
#out:	[0, 'second', 2, 'a', 'b', 'c']
2.2添加元素

直接从列表队尾添加新元素lst.append(var)
利用索引在某个位置插入新值lst.insert(n,var)

lst=[1,2,3,'a','b','c']
lst.append('d')
print(lst)
#out:	[1, 2, 3, 'a', 'b', 'c', 'd']
lst.insert(3,4)
print(lst)
#out:	[1, 2, 3, 4, 'a', 'b', 'c', 'd']

串联合并列表:用’+‘将两个列表串联,开辟新的内存空间。
用extend()函数合并两个列表

lst1=[1,2,3]
lst2=['a','b','c']
lst3=lst1+lst2
print(lst3)
lst1.extend(lst2)
print(lst1)
#Out:
#[1, 2, 3, 'a', 'b', 'c']
#[1, 2, 3, 'a', 'b', 'c']
2.3删除元素

根据下标删除
lst.pop(n):n表示索引下标。pop一次只能删除一个元素。不同于字典的pop(),列表的pop最多只能有1个参数,可以不填默认为删除最后一个元素,有返回值。n不能越界,否则会报错

lst=[1,2,3,'a','b','c']
n=lst.pop()
print(n,lst)
#out:	c [1, 2, 3, 'a', 'b']

del lst[n]:用del删除列表元素虽然可以实现多个元素删除,但删除并不是同时进行的,而是删除完一个之后再删除下一个,而这会带来的问题就是列表元素的下标索引会发生变化。

lst=[1,2,3,'a','b','c']
del(lst[3],lst[4],lst[5])
print(lst)
#out:	IndexError: list assignment index out of range
lst=[1,2,3,'a','b','c']
del(lst[3],lst[3],lst[3])
print(lst)
#out:	[1, 2, 3]

可以看到用第一次用del进行批量删除操作时发生了错误,原因就是del并不是同时删除下标为3,4,5的元素,而是每次只删除一个下标元素,再对进行了删除操作之后的列表进行下一次删除操作。所以del通常也只用来删除一个元素
根据元素值来删除
用lst.remove(var)可以实现根据元素值来进行删除。
其实稍微修改下也可以用remove实现用下标来删除,改为lst.remove(lst[n])即可

lst=['a','b','c','d','e']
lst.remove('a')
print(lst)
#out:	['b', 'c', 'd', 'e']
lst.remove(lst[0])
print(lst)
#out:	['c', 'd', 'e']

3.列表的切片

lst[n1:n2:step]:表示从n1到n2的前一个数,以step为步长,复制的列表。如果n2<n1,则step可以为负数,表示逆切片。step可以省略,默认为1。如果n1或者n2省略,则表示从头开始/到尾结束。

切片可以被赋值与插入

lst=[1,2,3,4]
print(lst[1:2])
lst[1:2]=['x','a']
print(lst)
#Out:   
#[2]
#[1, 'x', 'a', 3, 4]

关于列表可以注意的一点是,列表的切片是属于浅拷贝,在涉及到列表嵌套的时候需要注意。关于深拷贝,浅拷贝以及切片与sorted排序的拷贝问题可以看这篇文章


4.列表的排序

4.1列表的排序

lst.sort():直接对列表进行排序,修改原列表
sorted(lst):没有对原列表进行修改,在缓存空间中做出排序
两者都默认为升序排列,都有一个可选关键词reverse,表示是否逆排序。默认为False

lst=[6,5,4,1,2,3]
lst2=sorted(lst)
print(lst,'\n',lst2)
#out:	
#[6, 5, 4, 1, 2, 3] 
#[1, 2, 3, 4, 5, 6]
lst.sort()
print(lst)
#out:	[6, 5, 4, 3, 2, 1]
4.2列表的逆向

列表的逆向,即把列表中的元素位置翻转。
lst.reverse():直接对lst进行逆向,修改原列表
列表的逆向切片同样也能实现这个效果,但是并不是直接对列表进行修改,而是返回一个浅拷贝

lst=[6,5,4,1,2,3]
lst2=lst[::-1]
print(lst,'$',lst2)
#out:	[6, 5, 4, 1, 2, 3] $ [3, 2, 1, 4, 5, 6]
lst.reverse()
print(lst)
#out:	[3, 2, 1, 4, 5, 6]

5.列表的统计

len(lst):统计列表长度,常与for循环跟range()函数连用,实现对lst的遍历
lst.count(var):统计列表中某个元素出现的次数
set(lst):把列表转化为set集合,集合的特点是没有重复的元素,所以lst中重复的元素都会被删除,只需要比较sets跟lst的长度,就可以判定lst中是否有重复元素

lst=['a','b','c','d','a']
le=len(lst)
n=lst.count('a')
print(le,n)
#out:	5 2
sets=set(lst)
n1=len(sets)
n2=len(lst)
print(n1,n2)
#out:	4 5

数字列表的统计
max(lst):统计lst中的最大值
min(lst):统计lst中的最小值
sum(lst):计算lst的总和

numlst=[1,2,3,4,5]
maxnum=max(numlst)       #求列表最大值
minnum=min(numlst)       #求列表中的最小值
sumnum=sum(numlst)       #求列表的总和
print(maxnum,minnum,sumnum)
#out:	5 1 15

max,min,sorted函数都有一个key关键字,可以跟lambda函数连用,实现更多的操作,会在之后讲lambda函数的时候详细介绍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值