跟老齐学Python之有容乃大的list(3)_python

对list的操作

向list中插入一个元素

前面有一个向list中追加元素的方法,那个追加是且只能是将新元素添加在list的最后一个。如:

>>> all_users = ["qiwsir","github"]
>>> all_users.append("io")
>>> all_users
['qiwsir', 'github', 'io']

从这个操作,就可以说明list是可以随时改变的。这种改变的含义只它的大小即所容纳元素的个数以及元素内容,可以随时直接修改,而不用进行转换。这和str有着很大的不同。对于str,就不能进行字符的追加。请看官要注意比较,这也是str和list的重要区别。

与list.append(x)类似,list.insert(i,x)也是对list元素的增加。只不过是可以在任何位置增加一个元素。

我特别引导列为看官要通过官方文档来理解:

复制代码 代码如下:

list.insert(i, x)
Insert an item at a given position. The first argument is the index of the element before which to insert, so a.insert(0, x) inserts at the front of the list, and a.insert(len(a), x) is equivalent to a.append(x).

这次就不翻译了。如果看不懂英语,怎么了解贵国呢?一定要硬着头皮看英语,不仅能够学好程序,更能...(此处省略两千字)

根据官方文档的说明,我们做下面的实验,请看官从实验中理解:

>>> all_users
['qiwsir', 'github', 'io']
>>> all_users.insert("python")   #list.insert(i,x),要求有两个参数,少了就报错
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: insert() takes exactly 2 arguments (1 given)

>>> all_users.insert(0,"python")
>>> all_users
['python', 'qiwsir', 'github', 'io']

>>> all_users.insert(1,"http://")
>>> all_users
['python', 'http://', 'qiwsir', 'github', 'io']

>>> length = len(all_users)
>>> length
5

>>> all_users.insert(length,"algorithm")
>>> all_users
['python', 'http://', 'qiwsir', 'github', 'io', 'algorithm']

小结:

list.insert(i,x),将新的元素x 插入到原list中的list[i]前面
如果i==len(list),意思是在后面追加,就等同于list.append(x)
删除list中的元素

list中的元素,不仅能增加,还能被删除。删除list元素的方法有两个,它们分别是:

list.remove(x)
Remove the first item from the list whose value is x. It is an error if there is no such item.
list.pop([i])
Remove the item at the given position in the list, and return it. If no index is specified, a.pop() removes and returns the last item in the list. (The square brackets around the i in the method signature denote that the parameter is optional, not that you should type square brackets at that position. You will see this notation frequently in the Python Library Reference.)

我这里讲授python,有一个习惯,就是用学习物理的方法。如果看官当初物理没有学好,那么一定是没有用这种方法,或者你的老师没有用这种教学法。这种方法就是:自己先实验,然后总结规律。

先实验list.remove(x),注意看上面的描述。这是一个能够删除list元素的方法,同时上面说明告诉我们,如果x没有在list中,会报错。

>>> all_users
['python', 'http://', 'qiwsir', 'github', 'io', 'algorithm']
>>> all_users.remove("http://")
>>> all_users    #的确是把"http://"删除了
['python', 'qiwsir', 'github', 'io', 'algorithm']

>>> all_users.remove("tianchao")    #原list中没有“tianchao”,要删除,就报错。
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

注意两点:

如果正确删除,不会有任何反馈。没有消息就是好消息。
如果所删除的内容不在list中,就报错。注意阅读报错信息:x not in list
看官是不是想到一个问题?如果能够在删除之前,先判断一下这个元素是不是在list中,在就删,不在就不删,不是更智能吗?

如果看官想到这里,就是在编程的旅程上一进步。python的确让我们这么做。

>>> all_users
['python', 'qiwsir', 'github', 'io', 'algorithm']
>>> "python" in all_users    #这里用in来判断一个元素是否在list中,在则返回True,否则返回False
True

>>> if "python" in all_users:
...   all_users.remove("python")
...   print all_users
... else:
...   print "'python' is not in all_users"
...
['qiwsir', 'github', 'io', 'algorithm']   #删除了"python"元素

>>> if "python" in all_users:
...   all_users.remove("python")
...   print all_users
... else:
...   print "'python' is not in all_users"
...
'python' is not in all_users    #因为已经删除了,所以就没有了。

上述代码,就是两段小程序,我是在交互模式中运行的,相当于小实验。

另外一个删除list.pop([i])会怎么样呢?看看文档,做做实验。

>>> all_users
['qiwsir', 'github', 'io', 'algorithm']
>>> all_users.pop()   #list.pop([i]),圆括号里面是[i],表示这个序号是可选的
'algorithm'       #如果不写,就如同这个操作,默认删除最后一个,并且将该结果返回

>>> all_users
['qiwsir', 'github', 'io']

>>> all_users.pop(1)    #指定删除编号为1的元素"github"
'github'

>>> all_users
['qiwsir', 'io']
>>> all_users.pop()
'io'

>>> all_users      #只有一个元素了,该元素编号是0
['qiwsir']
>>> all_users.pop(1)  #但是非要删除编号为1的元素,结果报错。注意看报错信息
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: pop index out of range   #删除索引超出范围,就是1不在list的编号范围之内

给看官留下一个思考题,如果要向前面那样,能不能事先判断一下要删除的编号是不是在list的长度范围(用len(list)获取长度)以内?然后进行删除或者不删除操作。

list是一个有意思的东西,内涵丰富。看来下一讲还要继续讲list。并且可能会做一个有意思的游戏。请期待。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索跟老齐学Python
有容乃大的list
跟老齐学python pdf、跟老齐学python百度盘、跟老齐学python、老齐 python、跟老齐学python百度云,以便于您获取更多的相关知识。

时间: 2024-11-20 10:17:13

跟老齐学Python之有容乃大的list(3)_python的相关文章

跟老齐学Python之有容乃大的list(2)_python

对list的操作 合并list <有容乃大的list(1)>中,对list的操作提到了list.append(x),也就是将某个元素x 追加到已知的一个list后边. 除了将元素追加到list中,还能够将两个list合并,或者说将一个list追加到另外一个list中.按照前文的惯例,还是首先看官方文档中的描述: list.extend(L) Extend the list by appending all the items in the given list; equivalent to a

跟老齐学Python之有容乃大的list(1)_python

前面的学习中,我们已经知道了两种python的数据类型:int和str.再强调一下对数据类型的理解,这个世界是由数据组成的,数据可能是数字(注意,别搞混了,数字和数据是有区别的),也可能是文字.或者是声音.视频等.在python中(其它高级语言也类似)把状如2,3这样的数字划分为一个类型,把状如"你好"这样的文字划分一个类型,前者是int类型,后者是str类型(这里就不说翻译的名字了,请看官熟悉用英文的名称,对日后编程大有好处,什么好处呢?谁用谁知道!). 前面还学习了变量,如果某个变

跟老齐学Python之有容乃大的list(4)_python

list的话题的确不少,而且,在编程中,用途也非常多. 有看官可能要问了,如果要生成一个list,除了要把元素一个一个写上之外,有没有能够让计算机自己按照某个规律生成list的方法呢? 如果你提出了这个问题,充分说明你是一个"懒人",不过这不是什么坏事情,这个世界就是因为"懒人"的存在而进步."懒人"其实不懒. 对list的操作 range(start,stop)生成数字list range(start, stop[, step])是一个内置函数

跟老齐学Python之字典,你还记得吗?_python

字典,这个东西你现在还用吗?随着网络的发展,用的人越来越少了.不少人习惯于在网上搜索,不仅有web版,乃至于已经有手机版的各种字典了.我曾经用过一本小小的<新华字典>. <新华字典>是中国第一部现代汉语字典.最早的名字叫<伍记小字典>,但未能编纂完成.自1953年,开始重编,其凡例完全采用<伍记小字典>.从1953年开始出版,经过反复修订,但是以1957年商务印书馆出版的<新华字典>作为第一版.原由新华辞书社编写,1956年并入中科院语言研究所(

跟老齐学Python之list和str比较_python

相同点 都属于序列类型的数据 所谓序列类型的数据,就是说它的每一个元素都可以通过指定一个编号,行话叫做"偏移量"的方式得到,而要想一次得到多个元素,可以使用切片.偏移量从0开始,总元素数减1结束. 例如: >>> welcome_str = "Welcome you" >>> welcome_str[0] 'W' >>> welcome_str[1] 'e' >>> welcome_str[le

跟老齐学Python之一个免费的实验室_python

在学生时代,就羡慕实验室,老师在里面可以鼓捣各种有意思的东西.上大学的时候,终于有机会在实验室做大量实验了,因为我是物理系,并且,遇到了一位非常令我尊敬的老师--高老师,让我在他的实验室里面,把所有已经破旧损坏的实验仪器修理装配好,并且按照要求做好实验样例.经过一番折腾,才明白,要做好实验,不仅仅花费精力,还有不菲的设备成本呢.后来工作的时候,更感觉到实验设备费用之高昂,因此做实验的时候总要小心翼翼. 再后来,终于发现原来计算机是一个最好的实验室.在这里做实验成本真的很低呀. 扯的远了吧.不远,

跟老齐学Python之从if开始语句的征程_python

一般编程的教材,都是要把所有的变量类型讲完,然后才讲语句.这种讲法,其实不符合学习的特点.学习,就是要循序渐进的.在这点上,我可以很吹一通了,因为我做过教师,研究教育教学,算是有一点心得的.所以,我在这里就开始讲授语句. 什么是语句 在前面,我们已经写了一些.py的文件,这些文件可以用python来运行.那些文件,就是由语句组成的程序. 为了能够严谨地阐述这个概念,我还是要抄一段维基百科中的词条:命令式编程 命令式编程(英语:Imperative programming),是一种描述电脑所需作出

跟老齐学Python之眼花缭乱的运算符_python

在计算机高级中语言,运算符是比较多样化的.其实,也都源于我们日常的需要. 算术运算符 前面已经讲过了四则运算,其中涉及到一些运算符:加减乘除,对应的符号分别是:+ - * /,此外,还有求余数的:%.这些都是算术运算符.其实,算术运算符不止这些.根据中学数学的知识,看官也应该想到,还应该有乘方.开方之类的. 下面列出一个表格,将所有的运算符表现出来.不用记,但是要认真地看一看,知道有那些,如果以后用到,但是不自信能够记住,可以来查. 运算符 描述 实例 + 加 - 两个对象相加 10+20 输出

跟老齐学Python之玩转字符串(3)_python

字符串就是一个话题中心. 给字符串编号 在很多很多情况下,我们都要对字符串中的每个字符进行操作(具体看后面的内容),要准确进行操作,必须做的一个工作就是把字符进行编号.比如一个班里面有50名学生,如果这些学生都有学号,老师操作他们将简化很多.比如不用专门找每个人名字,直接通过学号知道谁有没有交作业. 在python中按照这样的顺序对字符串进行编号:从左边第一个开始是0号,向下依次按照整数增加,为1.2...,直到最后一个,在这个过程中,所有字符,包括空格,都进行变好.例如: Hello,wor