先实验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)获取长度)以内?然后进行删除或者不删除操作。










