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 01 Python
python使用正则表达式检测密码强度源码分享
Jun 11 Python
用Eclipse写python程序
Feb 10 Python
解决pycharm安装后代码区不能编辑的问题
Oct 28 Python
python实现合并两个排序的链表
Mar 03 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
python分别打包出32位和64位应用程序
Feb 18 Python
JupyterNotebook 输出窗口的显示效果调整方法
Apr 13 Python
基于pandas向csv添加新的行和列
May 25 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
教你如何使用Python Tkinter库制作记事本
Jun 10 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 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 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
解析php中反射的应用
2013/06/18 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
Canvas实现微信红包照片效果
2018/08/21 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
pycharm创建一个python包方法图解
2019/04/10 Python
python里dict变成list实例方法
2019/06/26 Python
Python中print函数简单使用总结
2019/08/05 Python
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
几个常见的软件测试问题
2016/09/07 面试题
经理管理专业自荐信范文
2013/12/31 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
教师创先争优承诺书
2015/04/27 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书
推广普通话主题班会
2015/08/17 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS