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基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
详解Python的collections模块中的deque双端队列结构
Jul 07 Python
答题辅助python代码实现
Jan 16 Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 Python
浅谈利用numpy对矩阵进行归一化处理的方法
Jul 11 Python
Python 函数返回值的示例代码
Mar 11 Python
详解python读取image
Apr 03 Python
pytorch 归一化与反归一化实例
Dec 31 Python
django模型动态修改参数,增加 filter 字段的方式
Mar 16 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
Python之字典对象的几种创建方法
Sep 30 Python
python opencv肤色检测的实现示例
Dec 21 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中动态调用函数的方法
2015/03/16 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
Nodejs异步流程框架async的方法
2019/06/07 NodeJs
原生JS实现烟花效果
2020/03/10 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
Python实现基于POS算法的区块链
2018/08/07 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
使用python对excel表格处理的一些小功能
2021/01/25 Python
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
String这个类型的class为何定义成final?
2012/11/13 面试题
建材业务员岗位职责
2013/12/08 职场文书
考博专家推荐信
2014/05/10 职场文书
学校社会实践活动总结
2014/07/03 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
幼儿园2014年度工作总结
2014/11/10 职场文书
2014年招商工作总结
2014/11/22 职场文书
女儿满月酒致辞
2015/07/29 职场文书
python中的3种定义类方法
2021/11/27 Python