python快速学习系列(2):深入理解List

List在python中是非常常用的一类容器,其功能也很强大,需要加深理解和学习。

1.切片 [起始位置:终止位置:步长] 左闭右开
L = [‘a’,‘b’,‘c’,‘d’]
newL = L[:3] #[‘a’,‘b’,‘c’]

2.多重List的浅拷贝和深拷贝(非常重要)

a = [[1,2,3],[4,5,6]]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(7)
a[1][2] = 10

运行以上代码后,得到的结果是:
a = [[1,2,3],[4,5,10],7]
b = [[1,2,3],[4,5,10],7]
c = [[1,2,3],[4,5,10]]
d = [[1,2,3],[4,5,6]]
解析原因:
b=a相当于给a起了个别名,可以理解为是地址赋值,b中的内容是a中所有元素的地址,所以a无论怎么变化,b都和a一样
c是浅拷贝,相当于是把a的每个List的初始地址给了c,所以当a添加一个7时,c中没有7的这个List的初始地址,所以没有7这个元素
d是深拷贝,相当于把a的每个元素的地址给了d,并且从可变类型变成了不可变类型
以上理解主要是可变对象和不可变对象,一定要理解

3.序列的加法,乘法和初始化
1)序列的加法(连接):本质上讲,字符串也是序列,同类型的序列是可以相加的

L1 = [1,2,3]
L2 = [4,5,6]
L = L1 + L2#[1,2,3,4,5,6]

2)序列的乘法:本质上是重复

L3 = L1 * 2 #[1,2,3,4,5,6]

3)序列的常用初始化方案

L = []
L = [0] * 10
L = [None] * 10

4.序列常见的内置方法
s = ‘sigai’
1)序列的包含关系:in
‘a’ in s -->True
2)序列的长度,最大值,最小值:len,max,min
len(s),max(s),min(s)
3)List与str的相互转化
-str转list:

L = list(s)  #l=['s','i','g','a','i']

-list转str:

s_from_l = ''.join(l)#s_from_l=sigai

join函数表示将列表中的元素进行拼接,引号之间的内容表示两两元素拼接中间的内容,此处为空

s_from_l = 'x'.join(l)#s_from_l=sxixgxaxi

5.List的元素或切片的赋值与删除
1)对列表内的元素可以随意赋值和删除

L = list(range(5)) #[0,1,2,3,4]
L[2],L[4] = L[4],L[2]#[0,1,4,3,2]

List中的赋值可以对多个对象同时进行,不需要像C语言等通过中间变量进行操作

del L[2]#[0,1,3,2]

2)列表内的切片可以随意的赋值和删除,还可以用作插入

L = [1,5]
L[1:1] = list(range(2,5))
#L[1:1]表示列表的第二个位置和第三个位置之间,[1,2,3,4,5]
L[2:4] =[]  #[1,2,5]
del L[1:] #[1]

6.count函数:计算列表中元素的重复个数
如:

L = [1,1,1,1,2,2]
L.count(1)#4

7.列表的排序
-sorted(L)函数排序后返回,原列表不变
-L.sort()就地排序,直接修改原列表,L.sort()是对象的方法,不是函数,没有返回值

8.初见List comprehension(非常有用,简化代码的神器)
1)求1-100中所有偶数的和(一行代码搞定,太方便了)

sum([x for x in range(101) if x % 2 == 0])

其中,[x for x in range(101) if x % 2 == 0]是一个List,表示的是1-100中所有的偶数
为了避免重复:
关于lambda以及map/reduce还有filter等高阶函数,还在函数式编程章节中记下
关于可迭代对象,生成器,迭代器等内容,会在迭代器章节中记下

8.各种常用方法

list.append(obj)
list.count(obj)
list.extend(seq)
list.index(obj)
list.insert(index,obj)
list.pop(obj=list[-1])
list.remove(obj)
list.sort([func])
list.reverse()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值