本文概述
- 介绍
- 实现循环
- 总结
它们可用于遍历列表, 字符串, 元组, 集合, 数组, 数据帧的序列。
给定一个元素列表, 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 | 柔滑 |
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循环用法】请随时在下面的评论部分中提出与本教程相关的任何问题。
推荐阅读
- TensorFlow 2.0实例研究和分析
- Scala权威入门指南
- Scala中的运算符用法
- 在Python中执行HTTP请求
- 使用R构建数据管道
- 禁用 Gnome Shell 默认的 Ubuntu Dock 和 Ubuntu AppIndicators 扩展
- Android动态添加Fragment
- Android-Java-普通类与抽象类(覆盖)&方法重载
- Geometric Applications of BSTs