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 算法 排序实现快速排序
Jun 05 Python
学习python 之编写简单乘法运算题
Feb 27 Python
最大K个数问题的Python版解法总结
Jun 16 Python
Python 基础教程之包和类的用法
Feb 23 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
Python使用Pickle库实现读写序列操作示例
Jun 15 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
基于python+selenium的二次封装的实现
Jan 06 Python
Python类和实例的属性机制原理详解
Mar 21 Python
python自动化调用百度api解决验证码
Apr 13 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 Python
python Django框架快速入门教程(后台管理)
Jul 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
destoon官方标签大全
2014/06/20 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
2015/08/31 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
JS中数据结构之栈
2019/01/01 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
javascript创建元素和删除元素实例小结
2019/06/19 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
利用python代码写的12306订票代码
2015/12/20 Python
python 重定向获取真实url的方法
2018/05/11 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
酒店办公室文员岗位职责
2013/12/18 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
委托公证书格式
2015/01/26 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL