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的即时标记项目练习笔记
Sep 18 Python
跟老齐学Python之数据类型总结
Sep 24 Python
python使用Plotly绘图工具绘制水平条形图
Mar 25 Python
python读取指定字节长度的文本方法
Aug 27 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
pycharm快捷键汇总
Feb 14 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
Python加速程序运行的方法
Jul 29 Python
Python下载的11种姿势(小结)
Nov 18 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 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编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
js Function类型
2011/12/04 Javascript
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
一个网页标题title的闪动提示效果实现思路
2014/03/22 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
对python周期性定时器的示例详解
2019/02/19 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
业务主管岗位职责
2013/11/20 职场文书
教师自我鉴定
2013/12/13 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
高校十八大报告感想
2014/01/27 职场文书
搞笑爱情保证书
2014/04/29 职场文书
如何写早恋检讨书
2014/09/10 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
暑假生活随笔
2015/08/15 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
alibaba seata服务端具体实现
2022/02/24 Java/Android
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL