代码块所需要的缩进
>>> 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 循环 不依赖可迭代的数据类型,而 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}
最后
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!