资讯专栏INFORMATION COLUMN

[零基础学python]有容乃大的list(3)

Julylovin / 2048人阅读

摘要:对于,就不能进行字符的追加。与类似,也是对元素的增加。注意两点如果正确删除,不会有任何反馈。没有消息就是好消息。是一个有意思的东西,内涵丰富。并且可能会做一个有意思的游戏。

现在是讲lis的第三章了。俗话说,事不过三,不知道在开头,我也不知道这一讲是不是能够把基础的list知识讲完呢。哈哈。其实如果真正写文章,会在写完之后把这句话删掉的。而我则是完全像跟看官聊天一样,就不删除了。

继续。

对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 "", line 1, in 
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 "", line 1, in 
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 "", line 1, in 
IndexError: pop index out of range      #删除索引超出范围,就是1不在list的编号范围之内

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45292.html

相关文章

  • [基础python]有容乃大list(2)

    摘要:对的操作合并有容乃大的中,对的操作提到了,也就是将某个元素追加到已知的一个后边。如果的对象是数值型,则报错。依然是上一条官方解释是不是说的非常清楚明白了先到这里,下讲还继续有容乃大的 对list的操作 合并list 《有容乃大的list(1)》中,对list的操作提到了list.append(x),也就是将某个元素x 追加到已知的一个list后边。 除了将元素追加到list中,还...

    阿罗 评论0 收藏0
  • [基础python]有容乃大list(1)

    摘要:定义在中,用方括号表示一个,在方括号里面,可以是,也可以是类型的数据,甚至也能够是这种布尔值。前面在对进行操作的时候,有一些内置函数,比如,这是去掉左右空格的内置函数,也是的方法。 前面的学习中,我们已经知道了两种python的数据类型:int和str。再强调一下对数据类型的理解,这个世界是由数据组成的,数据可能是数字(注意,别搞混了,数字和数据是有区别的),也可能是文字、或者是声音、...

    lewif 评论0 收藏0
  • [基础Python]有容乃大list(4)

    摘要:要研究清楚一些函数特别是内置函数的功能,建议看官首先要明白内置函数名称的含义。前面提到的内置函数得到的结果,就是一个排好序的。至此,有关的基本操作的内置函数,就差不多了。 list的话题的确不少,而且,在编程中,用途也非常多。 有看官可能要问了,如果要生成一个list,除了要把元素一个一个写上之外,有没有能够让计算机自己按照某个规律生成list的方法呢? 如果你提出了这个问题,充分...

    YanceyOfficial 评论0 收藏0
  • [基础python]关于循环小伎俩

    摘要:不管是还是,所发起的循环,在编程中是经常被用到的。这里重点是复习并展示一下它的循环中,做为计数器的使用。通过上述实例,主要是让看官理解在循环中计数器的作用。是用于并行遍历的函数。一种方法是通过循环,分别从两个中取出元素,然后求和。 不管是while还是for,所发起的循环,在python编程中是经常被用到的。特别是for,一般认为,它要比while快,而且也容易写(是否容易,可能因人而...

    李世赞 评论0 收藏0
  • [基础Python]再深点,更懂list

    摘要:有的前面有空格,有的后面有空格去掉元素前后的空格这是一个有意思的内置函数,本来我们可以通过的方式得到一个的每个元素编号,然后在用的方式得到该元素。 对于list,由于她的确非常非常庞杂,在python中应用非常广泛,所以,虽然已经介绍完毕了基础内容,这里还要用一讲深入一点点,往往越深入越... list解析 先看下面的例子,这个例子是想得到1到9的每个整数的平方,并且将结果放在li...

    mdluo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<