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内置函数bin() oct()等实现进制转换
Dec 30 Python
Python深入学习之对象的属性
Aug 31 Python
python matplotlib画图实例代码分享
Dec 27 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
Python 脚本的三种执行方式小结
Dec 21 Python
Python解析多帧dicom数据详解
Jan 13 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
基于virtualenv创建python虚拟环境过程图解
Mar 30 Python
pytorch常用数据类型所占字节数对照表一览
May 17 Python
对PyTorch中inplace字段的全面理解
May 22 Python
Python道路车道线检测的实现
Jun 27 Python
Python中time标准库的使用教程
Apr 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中字符集转换iconv函数使用总结
2014/10/11 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
jquery实现对联广告的方法
2015/02/05 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
JavaScript如何判断对象有某属性
2020/07/03 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
初学python数组的处理代码
2011/01/04 Python
使用tensorflow实现AlexNet
2017/11/20 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
Python实现注册、登录小程序功能
2018/09/21 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
python中使用while循环的实例
2019/08/05 Python
python tornado修改log输出方式
2019/11/18 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
员工年终考核评语
2014/12/31 职场文书
药店营业员岗位职责
2015/04/14 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
DSP接收机前端设想
2022/04/05 无线电