当前位置: 首页 > news >正文

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。

相关文章:

  • redis集群如果保证数据一致性_从CAP理论到分布式一致性协议
  • 影像科dsa为什么必须买维修保险_为什么大家对影像科了解得那么少呢?
  • netcore权限控制_lin-cms-dotnetcore.是如何方法级别的权限控制的?
  • 文本框 清空_只需5步,Unity中创建自滚动聊天室文本框
  • java判断是否运行在windows terminal_判断制冷空调系统是否运行正常的5个参数
  • mpa和pis_psig与mpa换算(压力单位换算psi)
  • php环境mysql 5.5安装教程_win7(64位)php5.5-Apache2.4-mysql5.6环境安装
  • mysql分组去掉重复记录_mysql去掉重复数据只保留一条,以及取分组后的一条数据...
  • 查看mysql的位数_如何查看mysql是几位的
  • mysql 视图 行号_MySQL踩坑记之视图添加行号
  • dos 前一个命令_非常实用的几个DOS命令,轻松解决电脑问题
  • shell mysql命令的参数_Linux/Unix shell 参数传递到SQL脚本
  • shell 循环 mysql_shell脚本备份mysql数据库(for循环)
  • swift 路由管理_京东商城订单模块Swift探索
  • 修改图片创建时间_Linux如何查看文件的创建、修改时间?
  • 深入了解以太坊
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 0基础学习移动端适配
  • create-react-app项目添加less配置
  • Laravel5.4 Queues队列学习
  • Redis 中的布隆过滤器
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • vagrant 添加本地 box 安装 laravel homestead
  • vue 个人积累(使用工具,组件)
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 技术胖1-4季视频复习— (看视频笔记)
  • 探索 JS 中的模块化
  • ​虚拟化系列介绍(十)
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # centos7下FFmpeg环境部署记录
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #Z2294. 打印树的直径
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (14)Hive调优——合并小文件
  • (C++17) std算法之执行策略 execution
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (poj1.3.2)1791(构造法模拟)
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (力扣)1314.矩阵区域和
  • (四)linux文件内容查看
  • (转)四层和七层负载均衡的区别
  • ******之网络***——物理***
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .a文件和.so文件
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net 8 发布了,试下微软最近强推的MAUI
  • .net Application的目录
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)