python列表删除和多重循环退出原理详解


Posted in Python onMarch 26, 2020

在学习python的时候,会有一些梗非常不适应,在此列举列表删除和多重循环退出的例子:

列表删除里面的坑

比如我们有一个列表里面有很多相同的值,假如:nums=[1,6,6,3,6,2,10,2,100],我想去掉6,可以这样写:

nums=[1,6,6,3,6,2,10,2,100]
 for n in nums:
   if n==6:
     nums.remove(n)
 nums.sort()
 print(nums)#输出结果:[1, 2, 2, 3, 6, 10, 100]

排序显示后列表中还有一个6,下面是慢动作分解:

index :0,num:1

index :1,num:6
before: [1, 6, 6, 3, 6, 2, 10, 2, 100]

after: [1, 6, 3, 6, 2, 10, 2, 100]
index :2,num:3
index :3,num:6
before: [1, 6, 3, 6, 2, 10, 2, 100]
after: [1, 3, 6, 2, 10, 2, 100]
index :4,num:10
index :5,num:2
index :6,num:100
final: [1, 3, 6, 2, 10, 2, 100]

用sort排序后如结果所示第一次循环到6的时候,下标为1,这时删除了index[1]=6,
接着在新列表中继续删除,index[2]=3,就直接略过了新列表中的index[1]=6,所以最终还有一个6

python中多重循环如何退出

我们在进行嵌套循环的时候,需要立刻退出,用break是不行的:

def fun():
  for i in range(3):
    for i in range(10,13):
      print("inner:",i)
      if i==12:
       # return
        break#会循环输出3次
    print("outter:",i)
  print('end')
fun()

输出结果如下:

inner: 10
inner: 11
inner: 12
outter: 12
inner: 10
inner: 11
inner: 12
outter: 12
inner: 10
inner: 11
inner: 12
outter: 12
end

解决办法:直接return或者加变量控制

def fun():
  for i in range(3):
    for i in range(10,13):
      print("inner:",i)
      if i==12:
       return
        #break#会循环输出3次
    print("outter:",i)
  print('end')
fun()

break 规范都是只结束最近一层循环的。python 在for用的是迭代器循环,i in range(3)并不受i==12影响而结束最外层循环,

因为i = 12也只是i的一个临时指向而已,python一切皆对象决定,i只是指向值为12的对象的id,

break到外层循环会重新指向迭代器range(3)的一个对象。

所以多重循环用break不能退出,我们可以用return来解决。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python黑魔法之参数传递
Feb 12 Python
浅析python递归函数和河内塔问题
Apr 18 Python
一条命令解决mac版本python IDLE不能输入中文问题
May 15 Python
在python中bool函数的取值方法
Nov 01 Python
python实现整数的二进制循环移位
Mar 08 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
python中栈的原理及实现方法示例
Nov 27 Python
基于h5py的使用及数据封装代码
Dec 26 Python
通过实例了解Python str()和repr()的区别
Jan 17 Python
Python pandas如何向excel添加数据
May 22 Python
python基于socket函数实现端口扫描
May 28 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
执行Python程序时模块报错问题
Mar 26 #Python
python3 正则表达式基础廖雪峰
Mar 25 #Python
python 6.7 编写printTable()函数表格打印(完整代码)
Mar 25 #Python
python实现人机五子棋
Mar 25 #Python
pyqt5数据库使用详细教程(打包解决方案)
Mar 25 #Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
Mar 25 #Python
python自动下载图片的方法示例
Mar 25 #Python
You might like
PHP设计模式之装饰者模式
2012/02/29 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
php+websocket 实现的聊天室功能详解
2020/05/27 PHP
javascript instanceof 内部机制探析
2010/10/15 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
js实现的tab标签切换效果代码分享
2015/08/25 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
ECMAScript6--解构
2017/03/30 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
javascript异步编程的六种方式总结
2019/05/17 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
使用Python生成200个激活码的实现方法
2019/11/22 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
python实现人像动漫化的示例代码
2020/05/17 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
放牛班的春天观后感
2015/06/01 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书