Python中的for循环用法

本文概述

  • 介绍
  • 实现循环
  • 总结
介绍像其他编程语言一样, Python中的for循环在某种意义上有点不同, 它们更像是迭代器, 而不像for关键字。在Python中, 没有用于(i = 0; i < n; i ++)的C语法, 但是你在n中使用了for。
它们可用于遍历列表, 字符串, 元组, 集合, 数组, 数据帧的序列。
给定一个元素列表, for循环可用于遍历该列表中的每个项目并执行它。
要遍历一系列For循环项目, 请使用range函数。范围函数根据序列的长度返回一个具有指定范围编号的新列表。
在迭代序列时, 还可以使用序列中的元素索引进行迭代, 但是关键是首先计算列表的长度, 然后在此长度范围内对序列进行迭代。
Python中的for循环为零索引。
让我们快速跳到其中的实现部分。
实现循环首先, 让我们打印1-10之间的数字。由于Python中的for循环是零索引的, 因此你需要在每次迭代中添加一个;否则, 它将输出0-9之间的值。
for i in range(10): print (i+1)

1 2 3 4 5 6 7 8 9 10

让我们使用for循环遍历单词srcmini的字符串, 只打印字母a。
for i in "srcmini": if i == 'a': print (i)

a a a

假设你要定义一个元素列表并逐个迭代这些元素。
sequence = [1, 2, 8, 100, 200, 'srcmini', 'tutorial']

for i in sequence: print (i)

1 2 8 100 200 srcmini tutorial

但是, 如果你想查找列表的长度然后对其进行迭代该怎么办?你将使用内置的len函数, 然后在长度输出上应用范围。
请记住, 该范围始终期望一个整数值。
for i in range(len(sequence)): print (sequence[i])

1 2 8 100 200 srcmini tutorial

大!但是, 当你可以直接在数字中使用i时, 为什么需要使用len函数呢?答案很简单。如果你想修改序列的索引或使用序列的索引(例如更改现有列表的元素), 那将需要range(len(sequence))。
for i in range(len(sequence)): element = sequence[i] if type(element) == int: sequence[i] = element + 4

sequence

[5, 6, 12, 104, 204, 'srcmini', 'tutorial']

不错, 不是吗?你可以根据if条件修改列表的元素。
现在让我们看一下如何打印1到20之间的奇数。要实现这一点, 你将必须在range函数中定义三件事。循环将在数字1-20上递增的起点, 终点和增量值(或步长)。
for i in range(1, 20, 2): print (i)

1 3 5 7 9 11 13 15 17 19

嵌套循环
for i in range(11): for j in range(i): print (i, end=' ') print()

1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10

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 花瓣长度 花瓣宽度 种类
0 5.1 3.5 1.4 0.2 柔滑
1 4.9 3.0 1.4 0.2 柔滑
2 4.7 3.2 1.3 0.2 柔滑
3 4.6 3.1 1.5 0.2 柔滑
4 5.0 3.6 1.4 0.2 柔滑
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列的每一行中添加两个。
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 花瓣长度 花瓣宽度 种类
0 7.1 5.5 3.4 2.2 柔滑
1 6.9 5.0 3.4 2.2 柔滑
2 6.7 5.2 3.3 2.2 柔滑
3 6.6 5.1 3.5 2.2 柔滑
4 7.0 5.6 3.4 2.2 柔滑
使用Lambda函数迭代序列与基本的for循环相比, Python的lambda函数既快速又强大。它被广泛使用, 尤其是在处理数据框时。你可以借助Lambda函数以很少的代码来处理数据。虽然, 有时变得难以理解。
x = [20, 30, 40, 50, 60] y = []

for v in x : y += [v * 5]

y

[100, 150, 200, 250, 300]

现在, 让我们尝试使用lambda和map函数。
Map接受一个函数(例如, lambda函数和一个序列x), 然后返回一个新序列。
y = map(lambda x: x * 5, x)

y

< map at 0x11be7cc88>

它返回一个生成器函数并从生成器获取输出;你将输出作为参数传递给list。
list(y)

[100, 150, 200, 250, 300]

现在, 让我们退后一步, 看看for循环方式和lambda / map()组合。你会注意到, 两者之间的区别在于添加了map, lambda以及删除了” for” 和” in” 。而且, 在一行中, 你就可以对其进行编码。
总结恭喜你完成了这个基本的Python For循环教程。
For循环是每种编程语言的骨干, 而当它是Python时, 使用For循环一点也不难编写代码, 它们的实质类似于编写英语句子。
如果你想了解有关Python中for循环的更多信息, 请参加srcmini的Python数据科学工具箱(第2部分)课程。
【Python中的for循环用法】请随时在下面的评论部分中提出与本教程相关的任何问题。

    推荐阅读