共计 2899 个字符,预计需要花费 8 分钟才能阅读完成。
导读 | 什么是循环?在编程中,循环意味着以相同的顺序多次重复同一组计算。 |
在编程中,循环意味着以相同的顺序多次重复同一组计算。
想想现实生活中的情况。你是一位在森林里测量树木的野外生物学家。你选一棵树,测量它的直径和高度,把它们写在你的笔记本上,估计它的总体积。接下来,你再选一棵树,测量它的直径和高度,把它们写在你的笔记本上,估计它的总体积。然后,你再选一棵树,测量它的直径和高度,把它们写在你的笔记本上,估计它的总体积。
您将不断重复相同的过程,直到示例中的所有树都用完为止。在编程行话中,您将遍历每棵树,并以相同的顺序执行相同的任务集。
回到编程,如果给您一个整数值列表,并要求对每个项进行平方,然后再加 5,最后报告结果——这就是一个循环的例子。
那么我们可以循环什么呢? 基本上,任何可迭代的数据类型都可以使用循环进行操作。Python 中的可迭代对象是以不同数据格式存储的值序列,例如:
列表(例如。[15]10、12、13 日)
元组(例如(10,12,13,15))
字典(例如{‘ Name ‘: ‘ Alan ‘,‘ Age ‘: 25})
字符串(例如 ’ Data Science ‘)
主要有两种循环:for 循环和 while 循环。其中,for 循环是应用于数据科学问题中最常见的一种循环。关键的区别是:
for 循环对 iterable 对象中的每个元素进行有限次数的迭代
while 循环一直进行,直到满足某个条件
遍历一个列表非常简单。给一个值列表,并要求对每个项做一些事情。假设你有:
my_list = [1,2,3,4]
然后要求你计算列表中每个值的平方:
for each_value in my_list:
print(each_value * each_value)Out:
1
4
9
16
类似地,你可以做一些更复杂的循环(例如 ’ 嵌套循环 ’)。例如,给你两个列表并要求:
(i)将一个列表的值与另一个列表相乘
(ii)将它们追加到一个空列表中
(iii)打印出新的列表。
new_list = []list1 = [2, 3, 4]
list2 = [4, 5, 6]for i in list1:
for j in list2:
new_list.append(i*j)
print(new_list)Out:
[8, 10, 12, 12, 15, 18, 16, 20, 24]
遍历元组可能会有点复杂,这取决于元组的结构和要完成的任务。
让我们在一个列表中存储一些元组,每个元组代表一个类中学生的姓名和年龄:
students = [('Allie', 22), ('Monty', 18), ('Rebecca', 19)]
现在的任务是:
(i)提取所有的年龄
(ii)将它们存储在一个列表中
(iii)计算平均年龄
ages = []for i,j in students:
ages.append(j)
avg = sum(ages)/len(ages)
print(avg)
Out:
19.666666666666668
这里的每个元组都包含两个条目 (姓名和年龄)。即使您对名称不感兴趣,通过 i 和 j,您将指定这两个项目,并要求将项目 j (age) 追加到一个新的列表中。它被称为“元组拆包”。
Python 中的字典是键 - 值对的集合:字典中的每一项都有一个键和一个相关联的值。一个字典的例子:
# fruit price dictionary
fruit_prices = {"apple": 2.50, "orange": 4.99, "banana": 0.59}
您可以循环遍历这些 dictionary 元素并执行各种操作。下面是一些例子:
提取字典中的所有键值:
for i in fruit_prices.keys():
print(i)
Out:
apple
orange
banana
将所有的值存储在一个列表中:
values = []
for i in fruit_prices.values():
values.append(i)
print(values)
Out:
[2.5, 4.99, 0.59]
让我们考虑字符串 - ” Hello “。它看起来像一个可迭代对象吗? 事实上,它是。
for i in 'Hello':
print(i)
Out:
H
e
l
l
o
可以使用 for 循环解包字符串中的每个字符,并对它们执行各种操作。
同样,也可以遍历句子中的每个单词。但是在这种情况下,需要一个额外的步骤来分割句子。
sent = 'the sky is blue'
# splitting the sentence into words
sent_split = sent.split()
# extract each word with a loop
for i in sent_split:
print(i)
Out:
the
sky
is
blue
与 for 循环类似,while 循环重复执行一个代码块——只要条件为真。只有当循环条件为 false 时,循环才会中止。
while 循环的一般结构是这样的:
i = 0while i
在上面的每一次迭代中,i 的值都被输出到 5。在此之后,while 循环条件变为 false(即 i = 6 时,i≤5 变为 false)。
user_id = 'user101'
while True:
user = input('Enter your user ID:')
if user == user_id:
print("You have entered", user)
break
else:
print("Enter a valid user ID")
有三种所谓的循环控制关键字:continue, break, pass。这些语句改变循环流,并允许程序在触发特定外部条件时退出或跳过部分循环。
如果在循环中存在 break 语句,则在满足条件时终止循环。
string = 'hello, there'
for i in string:
if i == ',':
break
print(i)
Out:
h
e
l
l
o
在上面的代码片段中,我们要求程序在找到字符串中的逗号并执行下一条语句(打印 i)
continue 语句简单地跳过一个迭代并继续到下一个迭代,而不是跳出循环。
让我们执行上面相同的代码,但是使用 continue 关键字。
string = 'hello, there'
for i in string:
if i == ',':
continue
print(i)Out:
h
e
l
l
o
t
h
e
r
e
在这种情况下,如果循环遇到了逗号循环会继续跳过逗号。
pass 不做任何事情,它只是一个还没有写的语句的占位符。
string = 'hello, there'
for i in string:
pass
如果我们没有在那里放入一个 pass,它将抛出一个错误消息,其余的代码将不会执行。
本文的目的是直观地了解 Python 中的 for 循环和 while 循环。给出了如何循环遍历可迭代对象的例子,如列表、元组、字典和字符串。在文章的最后,我们通过示例介绍了循环控制语句的概念——break、continue 和 pass。
本文旨在对循环的工作方式进行初步概述。