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实现读取邮件数据并下载附件的实例
Aug 03 Python
深入理解Django中内置的用户认证
Oct 06 Python
Python爬虫获取整个站点中的所有外部链接代码示例
Dec 26 Python
详解将Django部署到Centos7全攻略
Sep 26 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
Django多数据库的实现过程详解
Aug 01 Python
Python IDLE或shell中切换路径的操作
Mar 09 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 Python
python语言中有算法吗
Jun 16 Python
python字符串的多行输出的实例详解
Jun 08 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 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
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
js获取input标签的输入值实现代码
2013/08/05 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
Python 自动补全(vim)
2014/11/30 Python
Python中的模块和包概念介绍
2015/04/13 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
python实现Pyecharts实现动态地图(Map、Geo)
2020/03/25 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
Python字符串及文本模式方法详解
2020/09/10 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
演讲比赛获奖感言
2014/02/02 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
销售团队口号大全
2014/06/06 职场文书
五好家庭事迹材料
2014/12/20 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
Spring实现内置监听器
2021/07/09 Java/Android
Nginx的gzip相关介绍
2022/05/11 Servers