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编写vim插件
Nov 28 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
关于python字符串方法分类详解
Aug 20 Python
python实现的config文件读写功能示例
Sep 24 Python
python中wx模块的具体使用方法
May 15 Python
Python使用itcaht库实现微信自动收发消息功能
Jul 13 Python
浅析NumPy 切片和索引
Sep 02 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 Python
Python更改pip镜像源的方法示例
Dec 01 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 01 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Apr 04 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
example1.php
2006/10/09 PHP
php中执行系统命令的方法
2015/03/21 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
FCK调用方法..
2006/12/21 Javascript
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
屏蔽Flash右键信息的js代码
2010/01/17 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
jquery实现表单获取短信验证码代码
2017/03/13 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
Electron 如何调用本地模块的方法
2019/02/01 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
python,Django实现的淘宝客登录功能示例
2019/06/12 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
简单叙述一下MYSQL的优化
2016/05/09 面试题
保险专业求职信
2014/07/07 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
排查MySQL生产环境索引没有效果
2022/04/11 MySQL