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 相关文章推荐
python3编写C/S网络程序实例教程
Aug 25 Python
python中函数总结之装饰器闭包详解
Jun 12 Python
python中返回矩阵的行列方法
Apr 04 Python
python获取代理IP的实例分享
May 07 Python
Python3实现对列表按元组指定列进行排序的方法分析
Dec 22 Python
pyqt5 删除layout中的所有widget方法
Jun 25 Python
Python调用C语言的实现
Jul 26 Python
python 用 xlwings 库 生成图表的操作方法
Dec 22 Python
用 Python 制作地球仪的方法
Apr 24 Python
python判断字符串以什么结尾的实例方法
Sep 18 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
Jan 27 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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
str_replace只替换一次字符串的方法
2013/04/09 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
微信上传视频文件提示(推荐)
2018/11/22 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
Python赋值语句后逗号的作用分析
2015/06/08 Python
在Python的Django框架中编写错误提示页面
2015/07/22 Python
用Python实现随机森林算法的示例
2017/08/24 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
python 不以科学计数法输出的方法
2018/07/16 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
html5 自定义播放器核心代码
2013/12/20 HTML / CSS
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
环境工程大学生个人的自我评价
2013/10/08 职场文书
2014年女职工工作总结
2014/11/27 职场文书
八年级英语教学计划
2015/01/23 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android