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中返回字典键的值的values()方法使用
May 22 Python
小议Python中自定义函数的可变参数的使用及注意点
Jun 21 Python
对Python3中的print函数以及与python2的对比分析
May 02 Python
python 平衡二叉树实现代码示例
Jul 07 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
Python 抓取微信公众号账号信息的方法
Jun 14 Python
Django配置MySQL数据库的完整步骤
Sep 07 Python
python时间与Unix时间戳相互转换方法详解
Feb 13 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
Nov 25 Python
python读写数据读写csv文件(pandas用法)
Dec 14 Python
关于Python中进度条的六个实用技巧分享
Apr 05 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自动获取字符串编码函数mb_detect_encoding
2011/05/31 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
Python中的文件和目录操作实现代码
2011/03/13 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
存储过程的优缺点是什么
2015/01/10 面试题
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
打架检讨书100字
2014/01/19 职场文书
小学生开学感言
2014/02/28 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
污染环境建议书
2015/09/14 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫