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中for循环和while循环的基本使用方法
Aug 21 Python
Python中对象的引用与复制代码示例
Dec 04 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
Mar 13 Python
Python返回数组/List长度的实例
Jun 23 Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
python opencv进行图像拼接
Mar 27 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
python使用QQ邮箱实现自动发送邮件
Jun 22 Python
pandas to_excel 添加颜色操作
Jul 14 Python
pandas apply多线程实现代码
Aug 17 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 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
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
adodb与adodb_lite之比较
2006/12/31 PHP
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
Smarty变量调节器失效的解决办法
2014/08/20 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
prototype 中文参数乱码解决方案
2009/11/09 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
快速入门Vue
2016/12/19 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
pm2启动ssr失败的解决方法
2019/06/29 Javascript
JavaScript实现京东放大镜效果
2019/12/03 Javascript
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
设置python3为默认python的方法
2018/10/31 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
大学生秋游活动方案
2014/02/17 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
超市商业计划书
2014/05/04 职场文书
工程售后服务承诺书
2014/05/21 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers