先上题:写出最终打印的结果

a = [1, 2, 3, 4]
for x in a:
a.remove(x)
print(a) print("=" * 20) b = [1, 2, 3, 4]
for i in b:
b.pop()
print(b)
print("=" * 20) c = [1, 2, 3, 4]
for i in range(len(c)):
del c[0] print(c)

  一开始一看应该都是[ ]吧??

在机器上跑了一下:

[2, 4]
====================
[1, 2]
====================
[ ]

得到的结果如上,是不是很吃惊!!

首先要弄明白remove,pop,del三者的区别

1.用remove("")方法删除指定元素,没有该元素时报错.

>>> number = [1,3,2,3,4]
>>> number.remove(3)
>>> print(number)
[1, 2, 3, 4]
>>> number.remove(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

2.利用del[索引数] 函数删除指定索引数的元素

>>> number = ['a','c','d']
>>> del number[1] #删除指定索引数的元素
>>> print(number)
['a', 'd']

3.利用pop()方法弹出元素,当()内无索引数时默认弹出最后一个元素

>>> number = [1,2,30,0]
>>> number.pop() #无索引弹出最后一个元素
0
>>> number.pop(1) #弹出索引为1的元素
2
>>> print(number)
[1, 30]

  以上是三者的用法,需要注意的是:del是python语句,而不是列表方法,无法通过list来调用

对列表a看一下循环的索引的变化

a = [1, 2, 3, 4]
for index, x in enumerate(a):
print("索引是{},去删除的值是{},列表的长度是{}".format(index, x, len(a)))
a.remove(x)
print("=" * 20)
print(a) 结果如下: 索引是0,去删除的值是1,列表的长度是4
====================
索引是1,去删除的值是3,列表的长度是3
====================
[2, 4]

  列表的长度在变化,索引值也在变化。这个是容易忽视的一个点,原因是for循环的对象是一个可迭代的对象。

Python中remove,pop,del的区别的更多相关文章

  1. Python中remove,del和pop的区别

    以a=[1,2,3] 为例,似乎使用del, remove, pop一个元素2 之后 a都是为 [1,3], 如下:http://Novell.Me >>> a=[1,2,3] &g ...

  2. [Python基础]Python中remove,del和pop的区别

    以a=[1,2,3] 为例,似乎使用del, remove, pop一个元素2 之后 a都是为 [1,3], 如下:http://Novell.Me >>> a=[1,2,3] &g ...

  3. Python中type与Object的区别

    Python中type与Object的区别 在查看了Python的API后,总算明白了.现在总结如下: 先来看object的说明: Python中关于object的说明很少,甚至只有一句话: clas ...

  4. Python中生成器和迭代器的区别(代码在Python3.5下测试):

    https://blog.csdn.net/u014745194/article/details/70176117 Python中生成器和迭代器的区别(代码在Python3.5下测试):Num01–& ...

  5. Python中的is和==的区别,==判断值是否相等,is判断地址是否一致

    Python中的is和==的区别 Python中的对象包含三要素:id.type.value. 其中id用来唯一标示一个对象,type标识对象的类型,value是对象的值. is判断的是a对象是否就是 ...

  6. 基于python中staticmethod和classmethod的区别(详解)

    例子 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 class A(object):   def foo(self,x):     print "executing foo ...

  7. Python中send()和sendall()的区别

    Python中send()和sendall()的区别 估计每个学习Python网络编程的人,都会遇到过这样的问题: send()和sendall()到底有什么区别? send()和sendall()原 ...

  8. Python中的is和==的区别

    Python中的is和==的区别 1. is 是比较内存地址id() a = "YongJie" b = "YongJie" print(id(a)) #233 ...

  9. python中_new_()与_init_()的区别

    __new__方法的使用 只有继承于object的新式类才能有__new__方法,__new__方法在创建类实例对象时由Python解释器自动调用,一般不用自己定义,Python默认调用该类的直接父类 ...

随机推荐

  1. ijcai statistics

  2. virtualbox+vagrant学习-3-Vagrant Share-2-HTTP Sharing

    HTTP Sharing Vagrant Share可以创建一个可公开访问的URL端点来访问在Vagrant环境中运行的HTTP服务器.这被称为“HTTP共享”,在使用Vagrant Share时默认 ...

  3. Sequelize-nodejs-11-Raw queries

    Raw queries原始查询 就是使用了原始的查询语句,如UPDATE users SET y = 42 WHERE x = 12 As there are often use cases in w ...

  4. MySQL插入emoji表情失败问题的解决方法

    前言 之前一直认为UTF-8是万能的字符集问题解决方案,直到最近遇到这个问题.最近在做新浪微博的爬虫, 在存库的时候发现只要保持emoji表情,就回抛出以下异常: Incorrect string v ...

  5. 如何使用eclipse运行简单的java程序

    打开eclipse,选择“file——new——Java project”   为我们的java项目取一个名字,然后点击完成.   这时候左侧列表就有了我们刚才新建的java项目,点开项目,在src目 ...

  6. openshift 入门 部署 openshift-origin-server-v3.7.0

    OpenShift是一个基于容器技术的云平台,这里的容器技术指的就是docker和kubernetes. Openshift 错误解决 错误信息 failed to run Kubelet: fail ...

  7. Activiti6.0 java spring5 SSM 工作流引擎 审批流程 项目框架

            1.模型管理 :web在线流程设计器.预览流程xml.导出xml.部署流程 2.流程管理 :导入导出流程资源文件.查看流程图.根据流程实例反射出流程模型.激活挂起 3.运行中流程:查看 ...

  8. Mysql(压缩包)下载与安装

    第一步:百度搜索  MySQL 点击官网进入 或者复制链接进入下载页面:https://downloads.mysql.com/archives/community/    第二步:选择自己需要的  ...

  9. 用NI的数据采集卡实现简单电子测试之3——绘制二极管V-I特性曲线图

    本文从本人的163博客搬迁至此. 接下来用USB-6009和LabVIEW实现对二极管最重要的特性曲线“V-I特性曲线”的测试和绘制. 一.什么是二极管V-I特性曲线    康华光版的<电子技术 ...

  10. POJ 1235 Machine Schedule 【二分图】

    这道题考察对最小点覆盖的理解. 做法: 对于一个作业,它需要A的a模式和B的b模式,那么可以从a模式向b模式连一条边:可以感性的理解为每一条边就是一个作业,需要求得有多少个模式可以覆盖所有的边,也就是 ...