python中退出多层循环的方法

1、定义标记变量;利用变量值的变化退出循环

# 第一种嵌套形式
a = [[1, 2, 3], [5, 5, 6], [7, 8, 9]]
# init_i = 0
# init_j = 0
flag = True
for i in range(3):
  for j in range(3):
    # print(i, j)
    if a[i][j] == 5:
      flag = False
      init_i = i
      init_j = j
      break
  if not flag:
    break
print(init_i, init_j)
print(i, j)

# 第二种嵌套形式
flag = True
while flag:
  for i in range(10):
    print(x)
    flag = False
    break

2、使用函数配合return关键字 实现跳出循环(在函数内部只要执行完return语句 则直接退出函数)

def test():
  while True:
    for x in range(10):
      print(x)
      return
test()

3、利用else continue 和外层的break跳出循环

a = [[1, 2, 3], [5, 5, 6], [7, 8, 9]]
init_i = 0
init_j = 0
flag = True
for i in range(3):
  for j in range(3):
    # print(i, j)
    if a[i][j] == 5:
      flag = False
      init_i = i
      init_j = j
      break
  else:
    continue
  break
  # if not flag:
  #   break
print(init_i, init_j)
print(i, j)

while True:
  for x in range(4):
    print(x)
    if x == 2:
      break
  else:
    print("未执行")
    continue
  break

python跳出多层循环的方法

今天同事问我一个python面试题,关于python跳出多层循环,原来还真没用过,网上一查还真有点意思,下面记录一下:

Python 本身没有“break n” 和“goto” 的语法,这也造成了Python 难以跳出多层(特定层数)循环。下面是几个跳出多层(特定层数)循环的tip。

1、自定义异常

class getoutofloop(Exception): pass
try:
  for i in range(5):
    for j in range(5):
      for k in range(5):
        if i == j == k == 3:
          raise getoutofloop()
        else:
          print i, '----', j, '----', k
except getoutofloop:
  pass

2、封装为函数return

def test():
  for i in range(5):
    for j in range(5):
      for k in range(5):
        if i == j == k == 3:
          return
        else:
          print i, '----', j, '----', k
test()

3、for ... else ... 用法

上面的两种都是只能跳出多层而不能跳出特定层数的循环,接下来的这个正是为了跳出特定层数的循环。

for i in range(5):
  for j in range(5):
    for k in range(5):
      if i == j == k == 3:
        break
      else:
        print i, '----', j, '----', k
    else: continue
    break
  else: continue
  break

else在 while和for 正常循环完成之后执行,和直接写在 while和for 之后没有区别,但是如果用break结束循环之后else就不会执行了。这也是个很新奇的做法。

才知道原来可以作为跳出多层循环用。不过要是有多次跳出不同层的循环的需求,也没辙了。

总结

以上所述是小编给大家介绍的python中退出多层循环的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

(0)

相关推荐

  • 谈谈Python中的while循环语句

    前言 python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环,for循环的时候必须有一个可迭代的对象,才能循环,比如说得有一个数组. 循环里面还有两个比较重要的关键字,continue和break,continue的意思是,跳出本次循环,继续重头开始循环,break的意思是停止整个循环,也就是说在continue和break下面的代码都是不执行的. for 循环用于集合,其中的每一个元素都会执行同一段代码块: 而 while 循环

  • Python中循环后使用list.append()数据被覆盖问题的解决

    前言 最近发现一个问题,在一次爬虫实战中,需要将字典加入列表中,意外的情况出现了!!!下面简单分析一下出现的状况: list = [] dic = {} for i in range(5): dic['num'] = i list.append(dic) print(id(dic)) print(list) 136652096 136652096 136652096 136652096 136652096 [{'num': 4}, {'num': 4}, {'num': 4}, {'num':

  • 我们为什么要减少Python中循环的使用

    前言 Python 提供给我们多种编码方式. 在某种程度上,这相当具有包容性. 来自于任何语言的人都可以编写 Python. 然而,学习写一门语言和以最优的方式写一门语言是两件不同的事情. 在这一系列名为 Python Shorts的文章中,我将阐述 Python 提供的一些简单但是非常有用的结构,一些小技巧以及一些我在数据科学工作中遇到的案例. 在这篇文章中,我将讨论 Python 中的 for 循环,以及如何尽量避免使用它们. 写 for 循环的 3 种方式: 让我用一个简单的例子来解释下.

  • 全面解析Python的While循环语句的使用方法

    Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务.其基本形式为: while 判断条件: 执行语句-- 执行语句可以是单个语句或语句块.判断条件可以是任何表达式,任何非零.或非空(null)的值均为true. 当判断条件假false时,循环结束. 执行流程图如下: 实例: #!/usr/bin/python count = 0 while (count < 9): print 'The count is:', count cou

  • python scatter散点图用循环分类法加图例

    本文实例为大家分享了python scatter散点图用循环分类法加图例,供大家参考,具体内容如下 import matplotlib.pyplot as plt import kNN plt.rcParams['font.sans-serif']=['Simhei'] plt.rcParams['axes.unicode_minus']=False datingDataMat, datingLabels = kNN.file2matrix('datingTestSet2.txt') plt.f

  • Python for循环与range函数的使用详解

    for 循环 For - in 语句是另一种循环语句,其特点是会在一系列对象上进行迭代(Iterates),即它会遍历序列中的每一个项目 注意: 1.else 部分是可选的.当循环中包含它时,它循环中包含它时,它总会在 for 循环结束后开始执行,除非程序遇到了 break 语句. 2.for - in 能在任何队列中工作.有的是通过内置 range 函数生成一串数字列表,也可以是包含任何类型对象的队列. Eg.数字列表 for i in range(1,5): print(i) else: p

  • Python创建一个空的dataframe,并循环赋值的方法

    如下所示: # 创建一个空的 DataFrame df_empty = pd.DataFrame() #或者 df_empty = pd.DataFrame(columns=['A', 'B', 'C', 'D']) #添加数据 a为一个新的dataframe df_empty = df_empty.append(a) 以上这篇Python创建一个空的dataframe,并循环赋值的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • python中退出多层循环的方法

    1.定义标记变量:利用变量值的变化退出循环 # 第一种嵌套形式 a = [[1, 2, 3], [5, 5, 6], [7, 8, 9]] # init_i = 0 # init_j = 0 flag = True for i in range(3): for j in range(3): # print(i, j) if a[i][j] == 5: flag = False init_i = i init_j = j break if not flag: break print(init_i,

  • 详解Python如何在多层循环中使用break/continue

    关于break/continue这两个关键字在平常的使用过程中一直比较迷糊.好不容易理解了吧,过段时间不使用好像忘记了什么.这个问题也是很多初学者比较容易提及的问题. 先通过一个简单的单层循环来了解一下这两个关键字的使用. print('=============单层循环使用=============') for n in range(10): if n == 9: print('退出当前循环,当前n = ', n) break elif n == 4: print('跳过当前循环,当前n =

  • 浅析Python中的for 循环

    Python for 和其他语言一样,也可以用来循环遍历对象,本文章向大家介绍Python for 循环的使用方法和实例,需要的朋友可与参考一下. 一个循环是一个结构,导致第一个程序要重复一定次数.重复不断循环的条件仍是如此.当条件变为假,循环结束和程序的控制传递给后面的语句循环. for循环: 在Python for循环遍历序列的任何物品,如一个列表或一个字符串,有能力. for循环语法是: for iterating_var in sequence: statements(s) 如果一个序列

  • Python中optionParser模块的使用方法实例教程

    本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. 示例如下: from optparse impo

  • 详解python中字典的循环遍历的两种方式

    开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python3中,下面两种方法都是通用的. 1. 只对键的遍历 一个简单的for语句就能循环字典的所有键,就像处理序列一样: d = {'name1' : 'pythontab', 'name2' : '.', 'name3' : 'com'} for key in d: print (key, ' value

  • 对python中的for循环和range内置函数详解

    如下所示: 1.for循环和range内置函数配合使用 range函数生成一个从零开始的列表, range(4)表示list:0123 range(1,11,2)表示从1开始到11-1为止步长为2的list:13579 即range(i)表示从0开始到i-1的列表,range(m,n)表示从m开始到n-1的列表,range(m,n,t)表示从m开始步长为t到n-1的列表 ''' print('第一次循环输出:') for i in range(4): print(i) print('第二次循环输

  • Python中的for循环详情

    目录 1.可迭代对象 1.1什么是可迭代对象 1.2怎么判断 2.字符串的for循环 3.列表的for循环 4.元组的for循环 5.字典的for循环 5.1keys() 5.2 values() 5.3 items() 6.range函数的for循环 6.1基础案例 6.2找出100以内能够被5整除的数 6.3高斯求和 7.多个for语句 8.列表推导式 9.for-else 10.实现三角阵列 11.99乘法表 for语句实际上解决的是循环问题.在很多的高级语言中都有for循环(for lo

  • 在matlab中实现for循环的方法

    简单for循环 for循环用来循环处理数据. 例:输出1~100的和 >> clear >> sum = 0; >> for i = 1:100 sum = sum +i; end >> sum sum = 5050 解释:i从1到100,每次增加一个,该共循环100次 注意:分号的位置:不能使用"+="符号:每写一层循环,必须以end结尾 带有步长的for循环 例:输出1到10之间的奇数和 >> clear >>

  • Python中list列表的赋值方法及遇到问题处理

    目录 1.列表list赋值方法 2.浅拷贝(shallowcopy) 3.深拷贝 4.关于拷贝操作的提醒 问题起源: 本文的原因是因为在使用list的直接赋值b=a时,得到的结果与预期不同,后来才发现直接使用等于号=对列表进行赋值会产生一系列的问题,于是将赋值.浅拷贝.深拷贝三者之间的区别进行记录. 1.列表list赋值方法 在python中,对象的赋值就是简单的对象引用,这点和C++是不同的, 如下例子所示: a = ['a', 'b', 'c'] b = a   # 采用简单的=赋值 pri

  • Python中range函数的使用方法

    目录 1.range()函数是什么? 2.语法格式 3.报错问题 4.range()函数需要注意的 5.range对象是不可变序列 6.range函数实现逆序遍历 7.与列表list的使用 8.关于range函数小结 前言: 本篇基于Python3环境,Python2环境下的range会有所不同,但并不影响我们使用. 1.range()函数是什么? range()函数是python的内置函数,它能返回一系列连续添加的整数,能够生成一个列表对象. 大多数时常出如今for循环中,在for循环中可做为

随机推荐