说明:本blog基于python3版本
前言
一、list的可更改性和创建
list是python中的一种常见数据类型,中文名叫列表;python中的数据类型分为可以更改的数据类型和不可以更改的数据类型,而list属于可以更改数据类型,即可以对list某个位置元素进行二次赋值!
我们用代码来重新阐述一下list的这个基本属性。
比如,我们设置一个叫a的list,值为 1,2,3
代码如下:
a = [1,2,3]
我们更改list的第一个元素,不会报错!如下
a[0] = 5
print(a)
[5, 2, 3]
然后我们介绍两种常见的设置list的方法,第一种是用“[ ]”括号把list中的元素值括起来,比如我们上文创建的 a;第二种就是把生成器或者迭代器的值转化为list,比如我们生成0到9的数使用如下指令
a = range(10)
print(a)
range(0, 10)
然后把生成器a转化为list类型的数据
a = list(a)
print(a)
结果如下:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
以上就是list的可更改属性和创建方法,其中可更改属性尤其值得我们注意,为了更好理解可更改属性,请对比学习tuple数据类型,详情见我的另一篇blog
[Python常见方法(3)-tuple的赋值报错、拆包、计数和拼接(https://editor.youkuaiyun.com/md/?articleId=122281458)
二、list的增删元素方法
list的增添元素主要有两个方法;一个是从list的最后一个元素后边增加元素,使用append方法,代码如下
b = [1,2,3]
b.append(5)
print(b)
结果如下
[1, 2, 3, 5]
另一个是从list的特定位置处增加新元素,使用insert方法,比如我们重新设定一个list b,并在第一个位置增加一个新的元素0 代码如下
b = [1,2,3,4]
b.insert(0,0)
print(b)
结果如下
[0, 1, 2, 3, 4]
但需要注意:insert方法的计算效率要远低于append方法,所以在算法优化时不建议使用;
另外,list的删除元素方法也有两个;一个是删除list的第一出现的符合要求的元素,使用remove方法,代码如下
b = [1,2,3,4,1,1,2,3]
print(b)
b.remove(2)
print(b)
结果如下
[1, 2, 3, 4, 1, 1, 2, 3]
[1, 3, 4, 1, 1, 2, 3]
另一个是删除list的某一个位置元素并返回,使用pop方法,与insert方法对应,代码如下
b = [1,2,3,4]
c =b.pop(2)
print(c)
结果如下
3
OK,我们对list中的元素进行增删操作一共介绍了4种方法,你掌握了吗?
三、list的拼接、切片方法
拼接就是使用“+”号对两个list进行拼接,形成一个新的list;
切片就是用“[起始位置 : 截至位置]”来对list进行切割,形成新的list
首先我们演示拼接方法:
代码:
a = [1,3,"s"]
print(a)
b = ["ss",{1:"s"}]
print(b)
c = a + b
print(c)
结果如下
[1, 3, 's']
['ss', {1: 's'}]
[1, 3, 's', 'ss', {1: 's'}]
然后我们演示切片一个list,假设我们取一个list的第2位到第4位共3个数
a = [1,2,3,4,5,6]
print(a)
a = a[1:4]
print(a)
结果如下
[1, 2, 3, 4, 5, 6]
[2, 3, 4]
正如我们的预期~
四、list的排序、配对方法
排序就是使用sorted方法,返回一个新的list,这里的新指的是对应新的地址的list;
配对就是用zip方法,以最小长度的list为标准,形成新的以list对应位置元素组合在一起的新的tuple(元组)
首先我们演示排序方法:
代码:
a = [5,1,3]
print(a)
a = sorted(a)
print(a)
结果如下
[5, 1, 3]
[1, 3, 5]
由此可见,sorted方法默认是返回一个由小到大排序的新的list;
当然我们也可以返回一个由大到小的list, 只需加一个reverse参数,并设置为True
a = [5,1,3]
print(a)
a = sorted(a, reverse = True)
print(a)
结果如下
[5, 1, 3]
[5, 3, 1]
【同时需要注意,对一个既含有数字又含有字母的list,无法进行排序操作,会报错!】
然后,我们演示如何使用zip方法进行list配对操作,假设我们有三个list,一个a = [1,2,3], 一个b = [“a”, “b”, “c”], 一个c = [“p”, “q”, 1, 5,7,8]
a,b,c = [1,2,3], ["a", "b", "c"], ["p", "q", 1, 5, 7, 8]
zipped = zip(a,b,c)
print(list(zipped))
结果如下
[(1, 'a', 'p'), (2, 'b', 'q'), (3, 'c', 1)]
我们会发现,zip是以list中最小长度为标准进行配对(最小长度为3),且用相同位置的元素组合成一个tuple,然后根据位置罗列,最终形成一个长度为3的新的tuple,也就是最终返回一个以tuple嵌套tuple形式的结果;最后,我们只不过把tuple数据格式强转为list形式(使用list方法),以便我们更好的观察结果。
这里给大家介绍一个zip的二维数组的魔法方法,即把行的列表转化为列的列表,同样是使用list的zip方法,
比如我们借用上文的zipped结果,
a,b,c = zip(*zipped)
print(a)
print(b)
print(c)
结果如下
(1, 2, 3)
('a', 'b', 'c')
('p', 'q', 1)
是不是很magic~
总结
写在最后,希望本blog对你的python学习有所帮助,欢迎点赞关注~