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实现的RSS阅读器实例
Jul 25 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
Python中static相关知识小结
Jan 02 Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 Python
Python2.7实现多进程下开发多线程示例
May 31 Python
python编写简单端口扫描器
Sep 04 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 Python
python开发入门——set的使用
Sep 03 Python
用python绘制樱花树
Oct 09 Python
Django admin组件的使用
Oct 24 Python
python urllib和urllib3知识点总结
Feb 08 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/05/04 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
Javascript & DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
2007/06/02 Javascript
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
jsTree使用记录实例
2016/12/01 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
详解RequireJs官方使用教程
2017/10/31 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
Python 爬虫图片简单实现
2017/06/01 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
python使用udp实现聊天器功能
2018/12/10 Python
Django中信号signals的简单使用方法
2019/07/04 Python
Django之模板层的实现代码
2019/09/09 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js