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下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
基于windows下pip安装python模块时报错总结
Jun 12 Python
使用Python对微信好友进行数据分析
Jun 27 Python
python高级特性和高阶函数及使用详解
Oct 17 Python
python 使用值来排序一个字典的方法
Nov 16 Python
python实现一个点绕另一个点旋转后的坐标
Dec 04 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
从训练好的tensorflow模型中打印训练变量实例
Jan 20 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
Feb 20 Python
Python关于反射的实例代码分享
Feb 20 Python
python模拟点击网页按钮实现方法
Feb 25 Python
图解Python中深浅copy(通俗易懂)
Sep 03 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
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
2012/05/24 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
javascript常用功能汇总
2015/07/05 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
ES6 Set结构的应用实例分析
2019/06/26 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
Python里隐藏的“禅”
2014/06/16 Python
python简单实现操作Mysql数据库
2018/01/29 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
python numpy数组中的复制知识解析
2020/02/03 Python
pip安装tensorflow的坑的解决
2020/04/19 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
软件测试企业面试试卷
2016/07/13 面试题
汽车销售顾问求职自荐信
2014/01/01 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
多媒体教室标语
2014/06/26 职场文书