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处理cookie详解
Feb 07 Python
Python json模块使用实例
Apr 11 Python
Python编程实现的简单神经网络算法示例
Jan 26 Python
python用fsolve、leastsq对非线性方程组求解
Dec 15 Python
详解django+django-celery+celery的整合实战
Mar 19 Python
python使用Plotly绘图工具绘制气泡图
Apr 01 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
Python封装成可带参数的EXE安装包实例
Aug 24 Python
PyTorch中反卷积的用法详解
Dec 30 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 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
正则表达式语法
2006/10/09 Javascript
php zend解密软件绿色版测试可用
2008/04/14 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
PHP同时连接多个mysql数据库示例代码
2014/03/17 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
详解PHP+AJAX无刷新分页实现方法
2015/11/03 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
JQUERY dialog的用法详细解析
2013/12/19 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
JS实现留言板功能[楼层效果展示]
2017/12/27 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
小程序接口的promise化的实现方法
2019/12/11 Javascript
Python Socket编程入门教程
2014/07/11 Python
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
Python实现新浪博客备份的方法
2016/04/27 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
python实现机器学习之多元线性回归
2018/09/06 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
python日志logging模块使用方法分析
2019/05/23 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
python处理excel绘制雷达图
2019/10/18 Python
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
厨师长岗位职责
2014/03/02 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
财务会计实训报告
2014/11/05 职场文书
酒店员工手册范本
2015/05/14 职场文书
股权投资协议书
2016/03/23 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
Python如何导出导入所有依赖包详解
2021/06/08 Python
MySQL 使用索引扫描进行排序
2021/06/20 MySQL