Python常见方法(4)-list的可更改性和创建、增删元素、拼接切片和排序配对方法详解

说明:本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.csdn.net/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学习有所帮助,欢迎点赞关注~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Efred.D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值