个性化阅读
专注于IT技术分析

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部分)课程。

请随时在下面的评论部分中提出与本教程相关的任何问题。

赞(0)
未经允许不得转载:srcmini » Python中的for循环用法

评论 抢沙发

评论前必须登录!