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实现动态添加类的属性或成员函数的解决方法
Jul 16 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 Python
Python工程师面试题 与Python基础语法相关
Jan 14 Python
Python上传package到Pypi(代码简单)
Feb 06 Python
python利用正则表达式搜索单词示例代码
Sep 24 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
Jun 24 Python
详解python的argpare和click模块小结
Mar 31 Python
解决django后台管理界面添加中文内容乱码问题
Nov 15 Python
Python解压 rar、zip、tar文件的方法
Nov 19 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入门经历和学习过程分享
2014/04/11 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
Yii1.1中通过Sql查询进行的分页操作方法
2017/03/16 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
PHP的PDO连接讲解
2019/01/24 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
2016/04/18 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
js实现随机点名
2021/01/19 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
python类装饰器用法实例
2015/06/04 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
详解Django中的过滤器
2015/07/16 Python
python 获取url中的参数列表实例
2018/12/18 Python
celery4+django2定时任务的实现代码
2018/12/23 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
综合素质的自我鉴定
2013/10/07 职场文书
出国导师推荐信
2014/01/16 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
挂职学习心得体会
2014/09/09 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书