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的框架中一些会话程序的管理
Apr 20 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
Python Unittest根据不同测试环境跳过用例的方法
Dec 16 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
PyQt5固定窗口大小的方法
Jun 18 Python
python全栈知识点总结
Jul 01 Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
使用python操作lmdb对数据读取的实例
Dec 11 Python
用OpenCV进行年龄和性别检测的实现示例
Jan 29 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
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
php设计模式之命令模式的应用详解
2013/05/21 PHP
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
php中socket通信机制实例详解
2015/01/03 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
JavaScript中立即执行函数实例详解
2017/11/04 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
Python之re操作方法(详解)
2017/06/14 Python
python 标准差计算的实现(std)
2019/07/29 Python
python 实现让字典的value 成为列表
2019/12/16 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
Python类继承和多态原理解析
2020/02/05 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
如何手工释放资源
2013/12/15 面试题
银行柜员求职自荐书
2014/06/18 职场文书
反腐倡廉标语
2014/06/24 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang