Python学习之循环方法详解

目录
  • for循环
  • while循环
  • 拓展:列表推导式
    • 常见的推导式方法
  • 循环的继续与退出(continue与break)
    • continue的使用
    • break的使用
  • 循环实现九九乘法表

什么是循环? —> 循环是有着周而复始的运动或变化的规律;在 Python 中,循环的操作也叫做 ‘遍历’ 。 与现实中一样,Python 中也同样存在着无限循环的

方法与有限循环的方法。接下来我们就先看看有限循环的方法 —> for 循环

for 循环

for 循环的功能:通过 for 关键字将列表、元组、字符串、字典中的每个元素按照序列顺序进行遍历(循环),当读取到最后一个元素循环也就结束了。

for 循环的用法:示例如下

for item in iterable:		# for循环语句块
    print(item)				# 每次循环对应的代码块
    						# 代码块所需要的缩进

# >>> iterable : 可循环的数据类型,如列表、元组、字符串、字典
# >>> item : iterable 中的每一个成员(元素)
# >>> 返回值 : for循环是语句,没有返回值;但是在一定的特殊情况下,是有返回值的。

books = ['Python不秃头', 'PHP是最美的语言', 'DBA从入门到删库', '面向监狱的爬虫']

for book in books:
    print(book)

print('finish')

# >>> 执行结果如下:
# >>> Python不秃头
# >>> PHP是最美的语言
# >>> DBA从入门到删库
# >>> 面向监狱的爬虫
# >>> finish

str_demo = 'Python'
for i in str_demo:
    print(i)

# >>> P
# >>> y
# >>> t
# >>> h
# >>> o
# >>> n

users = {'name': 'Neo', 'age': '18'}
for user in users:
    print(user, users[user])

# >>> 执行结果如下:
# >>> name Neo
# >>> age 18
# >>> 该循环的每一次遍历取 kay 的 value 不是很友好,有没有更好的方法方便我们取值呢?继续往下看。

字典利用 items 内置函数进行 for 循环

items() 内置函数的功能:将字典转成伪列表,每个 key 、 value 转成元组。

items() 内置函数的用法:示例如下

for key, value in dict.items():
    print(key, value)

# >>> items : 无参数
# >>> key : for 循环体中获取的字典当前元素的 key
# >>> value : for循环体中对应的 key 的 value 的值
# >>> 返回值 : for 循环是语句,没有返回值;items 返回一个列表

dict_users = {'name': 'Neo', 'age': '18'}
for key, value in dict_users.items():
    print(key, value)

# >>> 执行结果如下:
# >>> name Neo
# >>> age 18

# 如果是一个列表内存在着字典元素呢?
user_list = [{'name': 'Neo'}, {'name': 'Jack'}]

for user in user_list:
    print(user.get('name'))
    print(type(user))
    print(user.get('age'))

# >>> 执行结果如下:
# >>> Neo
# >>> <class 'dict'>
# >>> None		# 因为 age 并没有被定义,所以返回的是 Node
# >>> Jack
# >>> <class 'dict'>
# >>> None

Python 的内置函数 – range

range() 内置函数的功能:返回的是一个一定范围的可迭代对象(即可进行 for 循环),元素为整型。它不是列表,无法打印信息,但是可以循环。range() 函数一般帮助我们执行一定次数的循环而使用,比如设定循环5次。

range() 内置函数的用法:示例如下

for item in range(start, stop, step=1):
    print(item)

# >>> start : 开始的数字,类似索引的左边
# >>> stop : 结束的数字,类似索引的右边
# >>> step : 跳步,类似索引中的第三个参数
# >>> 返回值 : 返回一个可迭代(循环的)以整型为主的对象
# >>> 需要注意的是 range() 也是 左含右不含的方式

test_int = range(5)

for item in test_int:
    print(item)

# >>> 执行结果如下:
# >>> 0
# >>> 1
# >>> 2
# >>> 3
# >>> 4

else 在 for 循环中的使用

  • else 语句只能在 for 循环正常退出后执行
  • 也就是说循环没有报错,没有中途停止的情况下, else 语句 才会发生作用

示例如下:

'''
for 变量 in 序列:
    代码块 1
else:
    代码块 2
'''

test_int = range(5)

for item in test_int:
    print(item)
else:
    print('for循环成功结束')

重点

  • 若想执行 else 里面的代码块,必须是触达到循环条件且为假
  • 如果在循环里面提前结束了循环(break),则不会执行 else 里面的代码块

for 循环删除列表元素的避坑指南

首先,我们定义一个列表,使用 for 循环 删除列表中偶数(即能够被2整除的元素)

test_list = [3, 6, 8, 9, 25, 36, 100, 105]

for item in test_list:
    if item % 2 == 0:
        test_list.remove(item)
print(test_list)

# 执行结果如下:
# >>> [3, 8, 9, 25, 100, 105]

这里我们会发现 元素 8 、元素 100 仍然存在,删除 偶数 元素的操作存在了遗漏。这是为什么呢?

其实,这是因为 remove() 函数在执行删除一个元素之后,后边的元素会自动补位到上一个被删除元素的位置上去。然而此时的 for 循环 在正向的往下运行,会略过这个补位的元素,由此就造成了遍历的遗漏。

所以正确的遍历代码如下:

test_list = [3, 6, 8, 9, 25, 36, 100, 105]

for item in test_list[::-1]:
    if item % 2 == 0:
        test_list.remove(item)
print(test_list)

# 执行结果如下:
# >>> [3, 9, 25, 105]

嵌套 for 循环

什么是嵌套 for 循环? —> 即 for 循环中还有 for 循环

示例如下:

for i in range(3):
    for j in range(2):
        print('内层循环:', j)
        print('外层循环:', i)

# >>> 执行结果如下:
# >>> 内层循环: 0
# >>> 外层循环: 0
# >>> 内层循环: 1
# >>> 外层循环: 0
# >>> 内层循环: 0
# >>> 外层循环: 1
# >>> 内层循环: 1
# >>> 外层循环: 1
# >>> 内层循环: 0
# >>> 外层循环: 2
# >>> 内层循环: 1
# >>> 外层循环: 2

name = ['Neo', 'Jack', 'Lily']
age = [17, 18]

for a in name:
    # print(a)
    for b in age:
        print('姓名:', a, '年龄:', b)

# >>> 执行结果如下:
# >>> 姓名: Neo 年龄: 17
# >>> 姓名: Neo 年龄: 18
# >>> 姓名: Jack 年龄: 17
# >>> 姓名: Jack 年龄: 18
# >>> 姓名: Lily 年龄: 17
# >>> 姓名: Lily 年龄: 18

while 循环

什么是 while 循环? —> 以一定条件为基础的循环,条件满足的情况下无限循环,条件不满足则退出循环。

while 循环 不依赖可迭代的数据类型,而 for 循环依赖。

while 循环的功能:在满足条件的情况下,会无限循环;不满足条件后,将停止循环。

while 循环的用法:示例如下

while bool_result:
    do

# >>> bool_result : 布尔类型,此处与 if 语法完全一直
# >>> do : while 循环体的代码块;需要缩进
# >>> 返回值 : while 循环是语句,没有返回值

test_int = 1

while test_int < 5:
    print(test_int, end='\n')
    test_int += 1

# >>> 执行结果如下:
# >>> 1
# >>> 2
# >>> 3
# >>> 4
users_list = ['Neo', 'Jack', 'Lily', 'Adem']
index = 0
length = len(users_list)

while index <= length - 1:
    print('当前循环到的用户名为:', users_list[index])
    index += 1

print('while循环结束')

# >>> 执行结果如下:
# >>> 当前循环到的用户名为: Neo
# >>> 当前循环到的用户名为: Jack
# >>> 当前循环到的用户名为: Lily
# >>> 当前循环到的用户名为: Adem
# >>> while循环结束

注意:应避免 while True: 的情况,否则会进入死循环。

拓展:列表推导式

列表推导式也叫做列表解析式,是一种快速创建列表的简洁语法。

列表推导式以[]中括号为标志,一般由表达式、循环语句、条件语句组成(条件语句非必须)。

列表推导式 和 for 循环明显存在的关联,下面我们看一下对比。

# 20以内所有偶数的平方
list_1 = []
for x in range(20):
    if x % 2 == 0:
        list_1.append(x**2)
print(list_1)
# 运行结果:[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]

# 列表推导式,20以内所有偶数的平方
print([x ** 2 for x in range(20) if x % 2 == 0])
# 运行结果:[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]

列表推导式对 for 循环语句的格式做了一下简单的变形,并用 [ ] 括起来,最终将循环过程中计算表达式得到的一系列值组成一个列表。

常见的推导式方法

元组推导式如下:

# 元组推导式
t_1 = (x for x in range(10))  # 结果是生成器对象,使用tuple()函数将其转换为元组
print(tuple(t_1))
# 运行结果:(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

字典推导式如下:

# 字典推导式
print({x:x**2 for x in range(10)})
# 运行结果:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

集合推导式如下:

# 集合推导式
print({x for x in range(10)})
# 运行结果:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

循环的继续与退出(continue 与 break)

前面我们学习了 for 循环 与 while 循环 , 它们可以帮助我们自动处理一些业务。但是在循环中难免会出一些意外的状况,这个时候如果再继续循环下去,就会对我们的业务不利,这个时候就需要使用到 continue 、break 来帮助我们河狸的退出循环。

continue 的使用

continue 的功能:循环遇到 continue 将停止本次数据循环,进行下一次循环

continue 的用法:示例如下

while bool:
    continue
for item in iterable:
    continue
    print(item)

# >>> continue : 属于语法,不需要加 () 即可执行;无参数
# >>> 返回值 : continue 是语法,没有返回值。

count = 1
while count < 5:
    print(count)
    continue
    count += 1

# >>> 执行结果如下:
# >>> 1, 1, 1, 1, ...  无限循环,一直是1

break 的使用

break 的功能:是循环正常停止循环(遍历),这时如果循环配合了 else 语句,else语句将不执行。

break 的用法:示例如下

while bool:
    break
for item in iterable
	print(item)
    break

# >>> break :属于语法,不需要加 () 即可执行;无参数。
# >>> 返回值 : break 是语法,没有返回值。

count = 1
while count < 5:
    print(count)
    count += 1
    break

# >>> 执行结果如下:
# >>> 1

条件语句 与 continue、break 的关系

  • continu 与 break 通常伴随着循环语句中的条件语句,满足某些条件可以继续执行,不满足某些条件提前结束循环。
  • 在 while 循环中,break 语句的优先权要大于 while 逻辑块的判断结果 (比如上文中的 count += 1)

示例如下:

count = 1
while count < 5:
    print(count)
    count += 1
    if count == 2:
    	break

# >>> 执行结果如下:
# >>> 1

循环实现九九乘法表

代码示例如下:

# for 循环 实现九九乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        print('{} * {} = {}'.format(i, j, i * j), end=' ')
    print('')

# >>> 执行结果如下:
# >>> 1 * 1 = 1
# >>> 2 * 1 = 2 2 * 2 = 4
# >>> 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
# >>> 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
# >>> 5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
# >>> 6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
# >>> 7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
# >>> 8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
# >>> 9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
# while 循环 实现九九乘法表

i = 0
j = 0

while i < 9:
    i += 1
    while j < 9:
        j += 1
        print('{} * {} = {}'.format(j, i, i * j), end=' ')
        if i == j:
            j = 0
            print('')
            break

# >>> 执行结果如下:
# >>> 1 * 1 = 1
# >>> 1 * 2 = 2 2 * 2 = 4
# >>> 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
# >>> 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
# >>> 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
# >>> 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
# >>> 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
# >>> 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
# >>> 1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81

如何使用一行代码实现九九乘法表

print('\n'.join([' '.join(['{} * {} = {} '.format(item_1, item_2, item_1 * item_2) for item_2 in range(1, 10) if item_2 <= item_1]) for item_1 in range(1, 10)]))

# 利用了 列表推导式 及 列表转字符串
# 但使用这种方式的阅读性极差, 项目中绝不能使用

到此这篇关于Python学习之循环方法详解的文章就介绍到这了,更多相关Python循环内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python循环语句介绍

    目录 什么是循环呢? Python之While循环 Python之for循环 for循环遍历列表/字典的操作: for循环嵌套使用: 什么是循环呢? 简单理解,循环就是反复的去做某一件事情.生活中的例子:比如我们听歌的时候,在歌曲的页面就会出现单曲循环.列表循环.随机播放以及顺序播放等. Python中循环语句的逻辑:执行一个语句/一段代码块多次. 编程语言中,循环语句的一般形式如下: Python之While循环 while语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处

  • 详解python基础中的for循环

    目录 一. for 循环 二.拓展利用for循环输出字典的值value 三.for循环的优势 四.for实现累加 五.计算10以内偶数和 六.计算10以内奇数和 总结 一. for 循环 根据变量赋值的次数进行循环 for item in ["tom","bob","jerry","li"]:#in 后可跟列表,循环次数和列表元素数相同 print("hello"+item) for item in &qu

  • Python学习之while 循环语句

    目录 1.while 基本循环: 2.while -- continue 语句: 3.while --break语句: 4.while --else语句: 总结 while 语句 和 if 语句差不多 在while 后面加上所需的循环条件用 " : "作为结尾,当条件满足时就运行while下面的程序块直到while后面的条件不再被满足,程序会跳出while语句继续往下运行,大概有以下几种: while基本循环 while -- continue 语句 while --break语句 w

  • Python 循环结构详解

    目录 一.While循环 二.While…else…循环 三.for循环 四.for…else…循环 五.循环体结束语句 六.嵌套循环 前言: 在编写代码时如果能够简化一个程序,把重复的代码形成公共部分,利用语法来控制,对代码进行循环往复的执行,这就形成了循环结构逻辑. 一.While循环 While循环的语法格式如下: while 条件表达式 :    代码段(包含改变计数器值的语句) while 关键词后面紧跟的条件表达式决定了循环是够进行下去. 下面用while语句实现求1-100的累加和

  • 详解python的循环

    目录 range函数的使用 第一种创建方式 第二种创建方式 第三种创建方式 判断指定的数有没有在当前序列中 循环结构 总结 range函数的使用 作为循环遍历的对象 第一种创建方式 r=range(10) print(r)#range(0,10) print(list(r)) 默认从零开始,默认步长为1 range(0, 10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 第二种创建方式 指定了初始值1,到10结束,不包含10,默认步长为1 '''第二种创建方式,给了两个参数(

  • Python for循环你了解吗

    目录 一.For 语法结构和基于数字(range)的循环 二.基于列表list,元组tuple的循环 三.跳过单次循环 四.马上退出循环 五.嵌套循环 六.一次性退出嵌套循环 七. 显示循环的index和值 八.可循环类--随机数循环 总结 一.For 语法结构和基于数字(range)的循环 for x in range(5): print('hello') 二.基于列表list,元组tuple的循环 numbers1 = [1,2,3,4,5] numbers2 = (6,7,2,5) nam

  • 学习python 的while循环嵌套

    目录 while 循环嵌套 1 基本架构了解 2 打印一个三角形 2.1 练习打印一个距形 3 while嵌套实现九九乘法表  3.1 练习矩阵打印 总结 while 循环嵌套 1 基本架构了解 今天学习while循环嵌套.我们先看一个例子: i=0 while i<3: print("这是第%d行"%i) j=0 while j<4: print("学python") j+=1 print() i+=1  在上面的代码中,外层循环执行一次,内层循环会执

  • Python学习之循环方法详解

    目录 for循环 while循环 拓展:列表推导式 常见的推导式方法 循环的继续与退出(continue与break) continue的使用 break的使用 循环实现九九乘法表 什么是循环? —> 循环是有着周而复始的运动或变化的规律:在 Python 中,循环的操作也叫做 ‘遍历’ . 与现实中一样,Python 中也同样存在着无限循环的 方法与有限循环的方法.接下来我们就先看看有限循环的方法 —> for 循环 for 循环 for 循环的功能:通过 for 关键字将列表.元组.字符串

  • 对python 自定义协议的方法详解

    前面说到最近在写python的一些东西,然后和另外一位小伙伴定义了协议,然后昨天我有一部分东西没理解对,昨天上午我自己重写了一遍接收和发送的全部逻辑,昨天下午补了压力测试的脚本,自测没问题之后告知联调的小伙伴. 结果上午还是出了一点问题,然后我们两对代码,他写了一个python的实现.还好最后我这边没问题.(我也害怕是我这边出问题啊,所以我自己的代码都自己检查了好几遍) 简单放一下他的实现: import struct import ctypes class E(Exception): def

  • Python底层封装实现方法详解

    这篇文章主要介绍了Python底层封装实现方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 事实上,python封装特性的实现纯属"投机取巧",之所以类对象无法直接调用私有方法和属性,是因为底层实现时,python偷偷改变了它们的名称. python在底层实现时,将它们的名称都偷偷改成了"_类名__属性(方法)名"的格式 class Person: def setname(self, name): if le

  • python集合删除多种方法详解

    这篇文章主要介绍了python集合删除多种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 删除指定的元素 A={'a','c','b','d','e'} print("原集合:",A) A.remove('a') # 不存在会报错 print("删除a后:",A) A.discard('b') # 不存在不会报错 print("删除b后:",A) A.pop() print("

  • Python实现括号匹配方法详解

    这篇文章主要介绍了python实现括号匹配方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.用一个栈[python中可以用List]就可以解决,时间和空间复杂度都是O(n) # -*- coding: utf8 -*- # 符号表 SYMBOLS = {'}': '{', ']': '[', ')': '(', '>': '<'} SYMBOLS_L, SYMBOLS_R = SYMBOLS.values(), SYMBOLS.ke

  • Python sep参数使用方法详解

    这篇文章主要介绍了Python sep参数使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python中sep不是函数,它是print函数的一个参数,用来定义输出数据之间的间隔符号. 具体用法如下: 同时打印多个字符串的时候,每个字符串都会自动默认以空格作为每个字符串之间的间隔. print("abc", "uuu", "oop") # abc uuu oop 如果在多个字符串的最后

  • Python学习之面向对象编程详解

    目录 什么是面向对象编程(类) 类的关键字-class 类的定义与使用 类的参数-self self的解析与总结 类的构造函数 构造函数的创建方法 关于对象的生命周期 什么是面向对象编程(类) 利用(面向)对象的(属性和方法)去进行编码的过程即面向对象编程 自定义对象数据类型就是面向对象中的类(class)的概念 类的关键字 - class class 关键字用来声明类,类的名称首字母大写,多单词的情况下每个单词首字母大写(即驼峰命名法).在我们一开始学习 Python 的时候说过,要尽量避免使

  • Python学习之异常断言详解

    该章节我们来学习 异常的最后一个知识点 - 断言 ,断言是判断一个表达式,在表达式为 False 的时候触发异常.表达式我们可以对号入座,可以是条件语句中的声明,也可以是是 while 循环中的声明. 它们都是对一件事情进行 True 或者 False 的判断, 断言 也是如此,断言发现后面的表达式为 False 的时候 就会主动抛出异常. 在 Python 中 assert 就是断言的关键字,乍一听起来 似乎和 raise 关键字 的功能一样.其实 assert 断言的使用要比 raise 更

  • Python学习之日志模块详解

    目录 日志的作用 日志的等级 logging 模块的使用 logging 模块演示小案例 OK,今天我们来学习一下 python 中的日志模块,日志模块也是我们日后的开发工作中使用率很高的模块之一,接下来们就看一看今天具体要学习日志模块中的那些内容吧. 日志的作用 说到日志,我们完全可以想象为现实生活中的日记.日记是我们平时记录我们生活中点点滴滴的一种方法,而日志我们可以认为是 程序的日记 ,程序的日记是用来记录程序的行为,一般来说我们可以通过日志记录一些程序的重要信息. 比如哪里报错了?报错原

  • Python学习之加密模块使用详解

    目录 hashlib 模块 hashlib 模块的介绍 hashlib 模块中的常用加密方法 hashlib模块情景练习 base64 模块 base64 模块的介绍 base64 模块 模块中的常用方法 base64 模块的情景练习 hashlib 模块 hashlib 模块的介绍 hashlib 模块中拥有很多的加密算法,我们并不需要关心加密算法的实现方法.只需要调用我们需要的加密函数,就可以帮助我们对数据进行加密. 它的加密算法有很多,不仅如此,hashlib 中很多加密算法加密难度很大,

随机推荐