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的urllib库提交WEB表单
Feb 24 Python
python网络编程学习笔记(六):Web客户端访问
Jun 09 Python
python对字典进行排序实例
Sep 25 Python
python使用any判断一个对象是否为空的方法
Nov 19 Python
python操作ie登陆土豆网的方法
May 09 Python
详解Python的collections模块中的deque双端队列结构
Jul 07 Python
Python实现扩展内置类型的方法分析
Oct 16 Python
django定期执行任务(实例讲解)
Nov 03 Python
python psutil模块使用方法解析
Aug 01 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
Pytest中conftest.py的用法
Jun 27 Python
Python 的 sum() Pythonic 的求和方法详细
Oct 16 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
php的一个登录的类 [推荐]
2007/03/16 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
javascript 贪吃蛇实现代码
2008/11/22 Javascript
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
django定期执行任务(实例讲解)
2017/11/03 Python
Python爬豆瓣电影实例
2018/02/23 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
2014年酒店前台工作总结
2014/11/14 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
爱心捐助活动总结
2015/05/09 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
浅谈Python中的正则表达式
2021/06/28 Python
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫