python中list与tuple使用简介(不正经)

本文深入解析Python中列表和元组的特性和操作方法,包括数据的增删改查及高级函数应用,如sort、sorted、max、min等,对比了list与tuple的使用场景和优劣。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想学python的小伙伴推荐看廖雪峰前辈的网站
希望我的博文可以让你更有趣的记住这些函数。

一、何为list

python中,可以使用list储存数据。list对于其他语言中储存数据的数组而言就显得比较随便了。

这就好比去吃自助,C和JAVA中的数组吃啥得先说好了,说吃肉你胆敢夹一筷子菜当场不干了。而list就不一样了,你可以把想把什么塞入它嘴中就可以塞什么,而且可以想什么时候塞就什么时候塞,就是这么为所欲为。
在这里插入图片描述

>>>  list1 = [0, 1, 'list', [5,6,7]]   # 一个list中可存放不同的类型

作为随便的存储数据的容器,自然有增删改查等基本功能。除此之外python还有一系列强大的函数来支持你更方便的使用list。

1. 增加元素

最基本的增加元素的方法莫过于直接向一个list中插入了。

1. insert(n, obj)

第一个参数就是在第几个索引之前插入,第二个是插入什么。这两个参数一个都不能省略的。

>>> list1 = ['b', 'c']
>>> list1.insert(0, 'a')
>>> list1
['a', 'b', 'c']

这两句话就是在list1的0号索引,也就是’b’之前插入’a’。注意,这里是在0号索引之前插入。一定要记住这个之前

那如果我想在最后插入数据怎么办呢?只需要使用负数索引即可,-1即为倒数第一个,以此类推。

>>> list1.insert(-1, 'd')
>>> list1
['a', 'b', 'c', 'd']

倘若我只想在list最后添加,有没有更方便的方法呢?

2. append(obj)

这个方法自动将数据插入list的末尾。

>>> list1.append('e')
>>> list1
['a', 'b', 'c', 'd', 'e']

这两个添加的方法很方便,但是都比较实诚。实诚就实诚在你给什么它就把这个东西原封不动的塞入列表中,就像这样。

>>> list1.append(['f', 'g'])
>>> list1
['a', 'b', 'c', 'd', 'e', ['f', 'g']]

这就好比你想吃一个蛋糕,那可以交给这两个函数,但是你要想吃一烤箱蛋糕,那建议先拔掉烤箱的电源再交给它们。
在这里插入图片描述
那有没有可以把一个列表中的元素一个一个塞入原本列表的函数呢?有的。

3. extend(iterable)

这个参数就比较讲究,必须是可迭代对象。可迭代对象什么意思呢,简单说来就是可以拆成一个一个小蛋糕。详细可以参照廖雪峰前辈的网站

>>> list1.extend(['f', 'g'])
>>> list1
['a', 'b', 'c', 'd', 'e', 'f', 'g']
4. ‘+’ 号和 ‘*’ 号
>>> list1 = [1, 2, 3]
>>> list2 = [4, 5, 6]
>>> list3 = list1 + list2
>>> list3
[1, 2, 3, 4, 5, 6]

加号和extend效果近似,但是建议使用extend,尤其是在复制大量数据时,因为加号需要将所有对象赋值到一个新的列表(即这里的list3),这是很消耗资源的。

除了加法,python还支持乘法符号。

>>> list1 = [1, 2]
>>> list2 = list1 * 2
>>> list2
[1, 2, 1, 2]

这个乘法只是简单的将list中元素重复几遍。比如:

>>> list1 = [[1, 2], [3, 4]]
>>> list2 = list1 * 2
>>> list2
[[1, 2], [3, 4], [1, 2], [3, 4]]

2. 删除元素

删除元素首先要知道删除啥,要么知道删除的内容是啥,要么得知道删除第几个。
在这里插入图片描述

1. remove(obj)

这个函数是删除列表中的哪个元素。

>>> list1 = [1, 2, 3, 2, 1]
>>> list1.remove(2)
>>> list1
[1, 3, 2, 1]    # 只删除了第一个2

remove()只删除第一个匹配到的元素,删完就走,根本不关心后面的元素,本质上来说和渣男是一样的。

如果想要删除所有匹配的元素的话,在循环里写个判断就好了。

那如果我只知道第几个怎么办呢?

2. del
>>> list1 = [1, 3, 2, 1]
>>> del list1[0]    # 将list1第一个元素删除
>>> list1
[3, 2, 1]
3. clear()

删除元素,自然也可以把整个列表都清空掉。

>>> list1.clear()
>>> list1
[]
4. pop(n)

这个删除元素比较特殊,它将一个列表看成一个栈,它按照栈的后来先出原则,从列表最后元素开始进行删除。参数n表示删除几个元素。

>>> list1 = [1, 2, 3, 4]
>>> a = list1.pop(2)   # 参数为2表示将最后两个删除
>>> list1
[1, 2]
>>> a   # a存放的是倒数第二个,即最后出栈的元素
3

3. 修改元素

修改元素找到索引替换就可以了。这就像要求一个列表将家中的保险柜换成另一个保险柜一样,它不关心现在的保险柜里放的是钱还是TNT,这么一想也还挺危险的。

>>> list1 = [0, 0, 0, 0]
>>> list1[0:1] = [1, 1]
>>> list1
[1, 1, 0, 0]
>>> list1[0:1] = [[1,2],[3,4]]    # 这里不检查是否和原来元素一样
>>> list1
[[1,2], [3,4], 0, 0]

4. 查找元素

查找这件事本质上就是看一看列表里有没有这个东西,所以可以分为三种,第一种关心在不在就可以了,第二种得知道有几个,最后一个还要把藏在哪也找出来。
在这里插入图片描述

1. in

将返回在和不在这两个信息,多用在if判断语句中。

>>> list1 = [1, 2, 3]
>>> 5 in list1
False
2. count(obj)

这个函数就是并不满足于看看有没有,还要仔细瞅一瞅有几个这样的元素。参数就是要查的数据对象。

>>> list1 = [1, 2, 3, 1, 1]
>>> list1.count(1)
3
3. index(obj)

这个函数充分学习了remove函数渣男品质,只负责第一个匹配到的数据,对于剩下的不管不顾。

>>> list1 = [1, 2, 3, 2, 1]
>>>list1.index(2)    # 只查找第一个
1

到这里基本上python的列表就已经能够进行一些基本的操作了。为了更方便的使用,这里介绍了一些常用的函数。

5. 进阶的函数

1. len()

得到列表长度的函数,这里就不多介绍了。

>>> list1 = [1, 2, 3]
>>> len(list1)
3
2. sort(key=None, reverse=False)

这里的key意思为排序的规则,reverse表示正序和反序。
key的排序规则是什么意思呢?比如一群孩子的语数外成绩放在一个列表中,怎么评出成绩呢?有的孩子提出按照数学成绩来,有的提出按照体重来,有的提出按照拳头来。而这些规则(通常是一个函数)作为key的参数。
reverse默认为升序,True为降序。

>>> list1 = [1, -2, 10, -5, -1, -100]   
>>> list1.sort()    # 默认排序方式
>>> list1
[-100, -5, -2, -1, 1, 10]
>>> list1.sort(key=abs)   # 按照绝对值后的成绩进行排序
>>> list1
[-1, 1, -2, -5, 10, -100]

补充:在python中还有一个排序函数sorted()。此两种函数区别在何处呢?

  • sort()为列表的函数,其为list专用(甚至tuple也不可用),故其调用方式为list.sort()
  • sorted()函数适用于所有可迭代对象。故使用方式为sorted(obj, key=None, reverse=False)
3. max, min

求最大值最小值的函数,这里就不多赘述了。
在这里插入图片描述

>>> list1 = [1, 5, 6, 3]
>>> max(list1)
6
4. enumerate()

可以同时给出序号和数值。在for循环中经常使用到。

list1 = ['a', 'b', 'c']
for i, value in enumerate(list1):
	print(i, value)

0 a
1 b
2 c

二、何为tuple

不同于随便的列表,元组就非常正经,它一旦创建便不可修改,并且创建时必须赋值完毕。简单来说就是不可修改的list。

>>> tuple1 = (1, 'a', (1, 2))

那么我要你干嘛呢?
在这里插入图片描述
tuple好就好在因为不可修改的特性导致它很安全。

但也因为不可修改的特性导致其只能使用list查这一类的方法。具体而言是不能使用任何在原本数据基础上修改的函数,只能使用拥有返回值的函数(加号和乘号也可使用)。

在本文中可用的函数有+, *, in, count(obj), index(obj), len(obj), sorted(), max, min, enumerate()
用法同list。

若因疏忽导致本文有错误,或者对这篇文章有任何想法,欢迎发送邮件到 wangbendaner@qq.com。一经采纳,必有重谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值