实现循环
首先,我们打印 1–10 的数字。由于 Python 中的 for 循环从零开始索引,您需要在每次迭代中加一;否则会输出 0–9。
我们用 for 循环遍历单词 Datacamp 的字符串,并只打印字母 a。
假设您想要定义一个元素列表,并逐个迭代这些元素。
但如果您想先求出列表的长度,再对其进行迭代呢?您可以使用内置的 len 函数,然后基于长度的输出应用 range。
请记住,range 始终需要一个整数值。
太棒了!但当您可以直接使用 for i in numbers 时,为什么还需要用 len 呢?答案很简单。如果您想要修改或操作序列的索引,比如更改现有列表的元素,那就需要 range(len(sequence))。
很酷,对吧?您能够根据 if 条件修改列表中的元素。
现在我们来看看如何打印 1–20 之间的奇数。为此,您需要在 range 函数中定义三件事:起始点、结束点,以及递增值(或步长),循环会按此步长在 1–20 的数字上递增。
嵌套 For 循环
使用 For 循环迭代数据框的行与列
import pandas as pd
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
iris.head()
| sepal_length | sepal_width | petal_length | petal_width | species | |
|---|---|---|---|---|---|
| 0 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
| 1 | 4.9 | 3.0 | 1.4 | 0.2 | setosa |
| 2 | 4.7 | 3.2 | 1.3 | 0.2 | setosa |
| 3 | 4.6 | 3.1 | 1.5 | 0.2 | setosa |
| 4 | 5.0 | 3.6 | 1.4 | 0.2 | setosa |
len(iris)
# 150
for i in range(len(iris)):
Class = iris.iloc[i,4]
if Class == 'versicolor' and i < 70:
print (Class)
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
接下来,让我们给每一行的 sepal_length、sepal_width、petal_length 和 petal_width 四列都加上 2。
columns = ['sepal_length','sepal_width','petal_length','petal_width']
for indices, row in iris.iterrows():
for column in columns:
iris.at[indices,column] = row[column] + 2
iris.head()
| sepal_length | sepal_width | petal_length | petal_width | species | |
|---|---|---|---|---|---|
| 0 | 7.1 | 5.5 | 3.4 | 2.2 | setosa |
| 1 | 6.9 | 5.0 | 3.4 | 2.2 | setosa |
| 2 | 6.7 | 5.2 | 3.3 | 2.2 | setosa |
| 3 | 6.6 | 5.1 | 3.5 | 2.2 | setosa |
| 4 | 7.0 | 5.6 | 3.4 | 2.2 | setosa |
使用 Lambda 函数遍历序列
Python 的 lambda 函数相较于基础的 for 循环更快更强大。它被广泛使用,尤其是在处理 DataFrame 时。借助 Lambda 函数,您可以用极少的代码处理数据。不过,有时它也不太容易理解。
现在,我们用 lambda 和 map 函数来实现。
Map 接受一个函数(例如 lambda 函数)和一个序列 x,然后返回一个新的序列。
它返回的是一个生成器函数,若要从生成器中获取输出;您可以将其作为参数传给 list。
现在,我们回过头同时看看 for 循环的方法和 lambda/map() 的组合。您会注意到两者的区别在于使用了 map、lambda,并去掉了 "for" 和 "in"。而且您在一行内就完成了编码。
结论
恭喜您完成本次 Python For 循环基础教程。
For 循环是每种编程语言的基石。在 Python 中,使用 For 循环并不难写,其风格也与英文句子类似。
如果您想进一步学习 Python 中的 for 循环,请查看 DataCamp 的 Python 数据科学工具箱(第 2 部分)课程。
如对本教程有任何疑问,欢迎在下方评论区留言。
简介
与其他编程语言类似,Python 中的
for循环有些不同,更像是一个迭代器,而不是传统意义上的for关键字。在 Python 中,没有类似C的语法for(i=0; i<n; i++),而是使用for in n。它可用于迭代一系列对象,如
list、string、tuple、set、array、data frame。给定一个元素列表,
for循环可以遍历该列表中的每个项并执行相应操作。要迭代一系列项目,For 循环会使用
range函数。range函数会根据序列的长度返回该范围内数字的新列表。在遍历序列时,您也可以使用序列中元素的索引来迭代,但关键是先计算列表的长度,然后在该长度范围内进行迭代。
Python 中的
for循环是从零开始索引的。我们快速进入实现部分。
您也可以观看此视频,快速上手!