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中使用smtplib和email模块发送邮件实例
Apr 22 Python
Python线程中对join方法的运用的教程
Apr 09 Python
python利用Guetzli批量压缩图片
Mar 23 Python
python之PyMongo使用总结
May 26 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
Jun 23 Python
python3利用venv配置虚拟环境及过程中的小问题小结
Aug 01 Python
pyinstaller参数介绍以及总结详解
Jul 12 Python
python3 mmh3安装及使用方法
Oct 09 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
解决pycharm安装第三方库失败的问题
May 09 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 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获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
php验证手机号码
2015/11/11 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
浅析vue-router原理
2018/10/19 Javascript
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
Python中decorator使用实例
2015/04/14 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
Flask-Mail用法实例分析
2018/07/21 Python
Python中的CSV文件使用"with"语句的方式详解
2018/10/16 Python
24式加速你的Python(小结)
2019/06/13 Python
简单了解python变量的作用域
2019/07/30 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
毕业生自荐信格式
2014/03/07 职场文书
讲座主持词
2014/03/20 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
SpringBoot+VUE实现数据表格的实战
2021/08/02 Java/Android
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技