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中正则表达式的使用详解
Oct 17 Python
使用python检测主机存活端口及检查存活主机
Oct 12 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
浅述python中深浅拷贝原理
Sep 18 Python
Python实现Dijkstra算法
Oct 17 Python
Django 实现前端图片压缩功能的方法
Aug 07 Python
wxpython绘制音频效果
Nov 18 Python
python自动化unittest yaml使用过程解析
Feb 03 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
Mar 30 Python
python中使用np.delete()的实例方法
Feb 01 Python
pytorch 中autograd.grad()函数的用法说明
May 12 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
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
jquery实现全选功能效果的实现代码
2016/05/05 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
JS交互点击WKWebView中的图片实现预览效果
2018/01/05 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
Python中的rjust()方法使用详解
2015/05/19 Python
Python3写入文件常用方法实例分析
2015/05/22 Python
python difflib模块示例讲解
2017/09/13 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
彻底理解Python中的yield关键字
2019/04/01 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
大四学生思想汇报
2014/01/13 职场文书
行政求职信
2014/07/04 职场文书
大学生党性分析材料
2014/12/19 职场文书
2015年机关后勤工作总结
2015/05/26 职场文书
环保建议书范文
2015/09/14 职场文书
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs