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 相关文章推荐
2款Python内存检测工具介绍和使用方法
Jun 01 Python
python之wxPython菜单使用详解
Sep 28 Python
python通过shutil实现快速文件复制的方法
Mar 14 Python
Python字符串转换成浮点数函数分享
Jul 24 Python
Python3中的列表生成式、生成器与迭代器实例详解
Jun 11 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
Python网页正文转换语音文件的操作方法
Dec 09 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
Jan 07 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
python实现WebSocket服务端过程解析
Oct 18 Python
Python是什么 Python的用处
May 26 Python
python实战之90行代码写个猜数字游戏
Apr 22 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
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
php目录管理函数小结
2008/09/10 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
js表数据排序 sort table data
2009/02/18 Javascript
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
医生进修自我鉴定
2014/01/19 职场文书
物理专业本科生自荐信
2014/01/30 职场文书
品质主管岗位职责
2014/03/16 职场文书
关于学习的演讲稿
2014/05/10 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
安全生产标语大全
2014/10/06 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
数学教师个人总结
2015/02/06 职场文书
基于Go语言构建RESTful API服务
2021/07/25 Golang