python列表删除和多重循环退出原理详解

作者:Python热爱者 时间:2022-08-03 20:47:21 

在学习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来解决。

来源:https://blog.51cto.com/14246112/2481495

标签:python,列表,删除,循环,退出
0
投稿

猜你喜欢

  • 再谈“字符串拼接”的效率

    2009-04-30 12:48:00
  • python实现宿舍管理系统

    2023-12-28 14:14:27
  • Python两个内置函数 locals 和globals(学习笔记)

    2022-12-04 10:13:07
  • Python使用正则表达式过滤或替换HTML标签的方法详解

    2023-02-08 10:49:52
  • Mysql binlog日志文件过大的解决

    2024-01-19 09:49:15
  • Nodejs 连接 mysql时报Error: Cannot enqueue Query after fatal error错误的处理办法

    2024-01-15 11:47:34
  • 前端优化,让你的网页显示的更快更流畅

    2009-06-08 13:09:00
  • python matplotlib画图实例代码分享

    2022-06-12 23:12:21
  • python PyTorch参数初始化和Finetune

    2023-04-26 08:53:44
  • Python中BeautifulSoup通过查找Id获取元素信息

    2022-12-22 22:08:59
  • mysql 5.7.13 安装配置方法图文教程(linux)

    2024-01-27 20:46:37
  • oracle 10g OEM常规错误(Unknown host specified)解决

    2024-01-18 21:09:50
  • 探讨如何配置SQL2008,让其允许C#远程外部连接的方法详解

    2024-01-23 10:51:09
  • sqlserver四舍五入使用round函数及cast和convert函数

    2024-01-21 18:20:53
  • python中的随机函数小结

    2021-07-01 04:26:59
  • Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作

    2022-05-06 14:26:39
  • 关于Java中使用jdbc连接数据库中文出现乱码的问题

    2024-01-28 14:57:24
  • Python 列表和字典常踩坑即解决方案

    2021-05-01 17:45:25
  • javascript的正则表达式

    2010-07-27 12:29:00
  • 关于Python中模块的简介、定义与使用

    2021-01-25 16:09:29
  • asp之家 网络编程 m.aspxhome.com