Python 列表的清空方式


Posted in Python onJanuary 13, 2020

情况列表的操作:

del list[:]

list=[]

list[:]=[]

def func(L):                                  
  L.append(1)
  print L
  #L[:]=[]
  #del L[:]
  L = []
  print L
 
L=[]
func(L)
print L

输出结果:

[1]

[]

[1]

分析:L是可变数据类型,L作为参数,函数内对L的改变,是可以反映到函数外的L中的,执行L.append(1),是在操作,函数外L所占据的那块内存,然后执行L =[],(函数内的L),想当于L指向了另外一个空间。所以,func(L),print L,输出[1]。

其实函数的本意是将参数L指向的内存清空,用L=[],并不能清空L指向的内存

def func(L):
  L.append(1)                                 
  print L
  L[:]=[]
  #del L[:]
  #L = []
  print L
 
L=[]
func(L)
print L

输出结果:

[1]
[]
[]

L[:]=[]:把L对应的内存清空

def func(L): 

  L.append(1)
  print L
  #L[:]=[]
  del L[:]
  #L = []
  print L
 
L=[]
func(L)
print L

分析:

del L[:] 的效果跟L[:]=[]的效果是一样的。

python 赋值,往往是通过指针完成的,a=b,只是让a指向了b,并未把b的内容拷贝到a

def func(L):                                  
  L.append(1)
  print L
  print id(L)
  #L[:]=[]
  #del L[:]
  L = []
  print id(L)
  print L
 
L=[]
func(L)
print L

输出结果:

31460240

31460168

很明显:通过赋值L=[]后,L指向的内存完全不一致了。

类似于c++的引用赋值。

Python 赋值都是引用赋值,相当于使用指针来实现的另一个例证

list =[]                                    
next = [None,None]
for i in range(10):
  next[0] = i 
  #print id(i)
  #print id(next[0])
  next[1] = i 
  #print id(next)
  list.append(next)
 
print list

输出结果:

[[9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9]]

跟我们想要的结果不一致

list.append(next),仅仅是把next的地址放到list 里面

我们整个for 循环就使用了一个next,只是每次for循环,都在初始的next上进行操作,本次的操作会覆盖上次的结果

list =[]                                    
next = [None,None]
for i in range(10):
  next[0] = i 
  #print id(i)
  #print id(next[0])
  next[1] = i 
  #print id(next)
  list.append(next)
 
print list
print id(list[0])
print id(list[1])

输出结果:

[[9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9], [9, 9]]

36166472

36166472

解决办法,每次for 循环都重新分配空间

list =[]                                    
for i in range(10):
  next = [None,None]
  next[0] = i 
  #print id(i)
  #print id(next[0])
  next[1] = i 
  #print id(next)
  list.append(next)
 
print list
print id(list[0])
print id(list[1])

输出结果:

[[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9]]

15060360

15059712

以上这篇Python 列表的清空方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python xlrd读取excel日期类型的2种方法
Apr 28 Python
分享Python字符串关键点
Dec 13 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
聊聊Python中的pypy
Jan 12 Python
http请求 request失败自动重新尝试代码示例
Jan 25 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
Python网页正文转换语音文件的操作方法
Dec 09 Python
Python3中lambda表达式与函数式编程讲解
Jan 14 Python
python实现蒙特卡罗方法教程
Jan 28 Python
初次部署django+gunicorn+nginx的方法步骤
Sep 11 Python
Flask中sqlalchemy模块的实例用法
Aug 02 Python
Python代码注释规范代码实例解析
Aug 14 Python
Python SSL证书验证问题解决方案
Jan 13 #Python
python清空命令行方式
Jan 13 #Python
Pytorch GPU显存充足却显示out of memory的解决方式
Jan 13 #Python
Python开发之基于模板匹配的信用卡数字识别功能
Jan 13 #Python
python中的itertools的使用详解
Jan 13 #Python
python3读取csv文件任意行列代码实例
Jan 13 #Python
pytorch程序异常后删除占用的显存操作
Jan 13 #Python
You might like
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
2013/11/21 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
vue多层嵌套路由实例分析
2019/03/19 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
Python ZipFile模块详解
2013/11/01 Python
用Python进行基础的函数式编程的教程
2015/03/31 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
Python构建XML树结构的方法示例
2017/06/30 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
python3.7 sys模块的具体使用
2019/07/22 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
用python写测试数据文件过程解析
2019/09/25 Python
Python for i in range ()用法详解
2020/09/18 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
写给老师的感谢信
2015/01/20 职场文书
烈士陵园观后感
2015/06/08 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
node快速搭建后台的实现步骤
2022/02/18 NodeJs
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers