什么是 For 循环?
Python 中的 for 循环用于重复使用函数或过程,每次将其应用于前一个序列的结果。 这个重复的过程称为迭代。 for 循环检查每次迭代,直到满足条件。 通常,当我们必须运行一个代码块将其复制 X 次时,会使用这些。 每次迭代一个序列时,它都会重新执行代码。
For 循环的语法
python 脚本中 for 循环的典型语法如下所示。
#!/usr/bin/python3 for a in sequence: body of for
For 循环如何工作
多种语言在其代码中具有 for 循环语法选项。 在 Python 中,任何具有可迭代方法的对象都可以在 for 循环中使用。 可迭代方法被定义为以列表形式呈现的数据,其中多个值以有序的方式存在。 我们还可以通过使用 next() 或 iter() 方法创建对象来定义我们的可迭代数组。
代码示例
使用简单的 For 循环
Pythonfor 语句按顺序一遍又一遍地运行一系列代码,每次都执行相同的代码块。 此函数允许我们重新运行命令 X 次,直到达到所需的结果。 替代循环命令使用 while 语句。 这两种构造都用于不同的目的。 在这里,我们使用 (0,3) 来确定要运行的迭代次数。
#!/usr/bin/python3 #simple for loop example for x in range(0, 3): print("Loop %d" % (x))
命令的输出如下。
[email protected]:~# python forloop1.py Loop 0 Loop 1 Loop 2 [email protected]:~#
我们可以看到 for 循环运行了固定数量的迭代 (0, 3),同时为每个完成的循环添加一个数字。 在下一个示例中,while 语句(使用布尔值 True)永远不会改变。
在 For 循环中使用 Range 语句
range() 函数有两组主要参数:
- 范围(停止) – 停止表示要渲染的整数(或整数)的数量,从 0 开始。
- 范围([start], 停止[, step])
- 开始:这是序列的开始编号。
- 停止: 生成的数字最多但不包括此数字。
- 步: 序列内数字之间的差异。
在脚本中使用 range() 函数,我们可以定义一定数量的循环来遍历该序列。 例如,我们可以将范围定义为 range(12)。 因为 Python 将 0 定义为范围(或索引列表)中的第一个数字,所以我们的示例范围是 0 到 11,而不是 1 到 12。Python 是基于 0 索引的。 这意味着索引列表从 0 开始,而不是 1。最后,用户应该注意所有参数都应该是正整数或负整数。
例如,在如下所示的 range() 函数中指定起点和终点,将生成一个从 4 到 7(5 个数字)的列表。
范围(4,7)
使用 forloop4.py 脚本,我们可以生成两个参数的范围。
#!/usr/bin/python3 for i in range(4, 7): print(i)
脚本输出如下。
[email protected]:~# python forloop4.py 4 5 6 [email protected]:~#
使用以下 forloop3.py 脚本,我们可以输出数字 0-6 的单个列表。
#!/usr/bin/python3 for i in range(7): print(i)
脚本输出如下。
[email protected]:~# python forloop3.py 0 1 2 3 4 5 6 [email protected]:~#
使用相同的方法,我们可以使用 forloop5.py 脚本来增加负数列表,以三为单位。
#!/usr/bin/python3 for i in range(0, -12, -3): print(i)
脚本输出如下。
[email protected]:~# python forloop5.py 0 -3 -6 -9 [email protected]:~#
在 For 循环中使用 While 语句
如果我们选择永远循环一个命令,我们可以在像下面这样的脚本中使用 while 语句重复重新运行一个简单的命令。
注意:如果您创建此脚本并运行它,它将运行得非常快。 我们的脚本跑了 54,000 在我们能够按 CTRL+C 结束运行之前不到一秒钟的迭代。
#!/usr/bin/python3 #simple for loop example x = 1 while True: print("Loop number %d " % (x)) x += 1
脚本输出如下。
[email protected]:~# python forloop2.py Loop number 1 Loop number 2 Loop number 3 . . . Loop number 54345 Loop number 54346 Loop number 54347 Loop ^C Traceback (most recent call last): File "forloop2.py", line 5, in <module> print("Loop number %d " % (x)) KeyboardInterrupt [email protected]:~#
初始 for 循环运行固定次数,因此在本例中运行了 3 次。 同时,while 循环会一直运行,直到循环条件发生变化或受到限制器的作用。
在 For 字符串上使用循环语句
字符串可以产生一系列字符,因为它们被视为可迭代对象。 使用 forloop6.py 脚本,我们可以按顺序列出字符串。
#!/usr/bin/python3 for x in "watermelon": print(x)
脚本输出如下。
[email protected]:~# python forloop6.py w a t e r m e l o n [email protected]:~#
在 For 循环中使用 Break 语句
使用 break 语句时,我们可以在循环遍历所有列出的项目之前停止循环。 使用 forloop7.py 脚本,我们可以在循环到达 Chevy 条目时终止脚本。
#!/usr/bin/python3 cars = ["Ford", "Chevy", "GM"] for x in cars: print(x) if x == "Chevy": break
脚本输出如下。
[email protected]:~# python forloop7.py Ford Chevy [email protected]:~#
在 For 循环中使用 Continue 语句
如果我们使用 continue 语句,我们可以停止当前的迭代循环并继续下面的条目。 使用采用我们之前的汽车示例的 forloop8.py 脚本将停止当前的迭代循环并继续列表中的下一个条目。
#!/usr/bin/python3 cars = ["Ford", "Chevy", "GM"] for x in cars: if x == "Chevy": continue print(x)
输出
[email protected]:~# python forloop8.py Ford GM [email protected]:~#
在 For 循环中使用 Else 语句
for 循环中的 else 语句在循环完成时运行特定的代码块。 使用 forloop9.py 脚本,我们可以输出一个范围,然后在完成时打印消息“Done”。 用户应注意,如果 break 语句停止运行循环,则不会执行 else 块。
#!/usr/bin/python3 for x in range(5): print(x) else: print("Done.")
输出。
[email protected]:~# python forloop9.py 0 1 2 3 4 Done. [email protected]:~#
在 For 循环中使用嵌套循环
嵌套循环只是循环中的循环。 对于外循环的每次迭代,内循环将运行一次。 使用 forloop10.py 脚本,我们
#!/usr/bin/python3 adj = ["Blue", "Yellow", "Red"] cars = ["Ford", "Chevy", "GM"] for x in adj: for y in cars: print(x, y)
输出。
[email protected]:~# python forloop10.py ('Blue', 'Ford') ('Blue', 'Chevy') ('Blue', 'GM') ('Yellow', 'Ford') ('Yellow', 'Chevy') ('Yellow', 'GM') ('Red', 'Ford') ('Red', 'Chevy') ('Red', 'GM') [email protected]:~#
在 For 循环中使用 Pass 语句
从技术上讲,for 循环不应该留空。 如果我们必须将 for 循环留空,我们可以使用 pass 语句来防止错误。 使用 forloop11.py 脚本,在运行我们的脚本时,我们根本不应该得到任何输出。
#!/usr/bin/python3 for x in[1, 2, 3]: pass
输出。
[email protected]:~# python forloop11.py [email protected]:~#
如果我们删除 pass 语句,这里是输出。
[email protected]:~# python forloop11.py File "forloop11.py", line 3 ^ IndentationError: expected an indented block [email protected]:~#
For 循环的 10 个实际用途
下面的示例(或其中的一些迭代)经常用于日常 Linux 管理。 其中一些可能是旧的或不再可用的参考函数,但列出它们是为了显示在脚本或终端中使用 for 循环的多功能性。 下面,我们将文件夹中的所有文件重命名为file1、file 2等…
j=1; for i in *; do mv "$i" File$j; j=$((j+1)); done
为 public_html/agora 文件夹中的所有用户更改目录 agora/ 下所有内容的所有权
for i in `ls -1 /var/cpanel/users/`; do chown -R $i. /home*/$i/public_html/agora/*; done
有时信号量会卡住 Apache 无法自行清理。 下面,我们运行 ipcs -s 命令来检查这一点。 用这个命令清除它们。
for i in `ipcs -s | awk '/httpd/ {print $2}'`; do (ipcrm -s $i); done
注意:下面的命令是清除特定文件夹。 谨慎使用,因为我们正在使用 rm 命令.
for i in $(ls -A .); do rm -f $i; done -
这是如何同时检查每日/每周/每月文件夹中的特定帐户备份(如果存在)。
for i in $(find /backup/cpbackup/ -type d | grep -i [A-Z]);do ll $i| grep -i <keyword>; done
下面显示了我们如何优化数据库中的所有表。
for i in $(mysql -e "show databases;" | sed 's/Database//') ; do for each in $(mysql -e "use $i; show tables;" | sed 's/Tables.*//' ;) ; do mysql -e "use $i ; optimize table $each" ; done ; done
在 cPanel 在 WHM 中具有可视化 SPF 安装程序之前,我们使用此命令添加 SPF 记录。
for i in `ls /var/cpanel/users` ;do /usr/local/cpanel/bin/spf_installer $i ;done
或者,如果我们想同时安装 SPF 和 DKIM 记录,我们使用这个命令。
for i in `ls /var/cpanel/users|grep -v "./"`; do /usr/local/cpanel/bin/dkim_keys_install && /usr/local/cpanel/bin/spf_installer $i ; done ;
在这里,我们使用 for 循环在 exim 主日志中搜索通过 IP 使用三个特定域的发件人,一旦找到,在添加评论的同时在防火墙中阻止他们。
for i in $(grep -i sendername /var/log/exim_mainlog |egrep 'domain.com| domain.net | domain.org | grep "<="| egrep "([0-9]{1,3}.){3}[0-9]{1,3}" -o | grep -v 72.52.178.16 | sort |uniq); do csf -d $i per ticket 4224475 for sending spam ;done
这里我们使用for循环杀死-9 nobody PHP进程,然后重启apache。
for i in $(ps aux |grep nobody |awk '{print $2}');do kill -9 $i;done && service httpd restart
结论
正如我们所见,for 循环直接在命令行或脚本中用于多种情况。 概括地说,for 循环是一种流控制语句,用于连续迭代特定代码块固定次数。 我们定义了这个 Python 语句,它经常执行一组条件,直到受到外部状态或影响。 总的来说,Python for 循环在现代编程语言中提供了一些最有用的选项。
我们以成为 Hosting™ 中最有帮助的人而自豪!
如果您对这些信息有任何疑问,我们将一年 365 天、每周 7 天、每天 24 小时回答有关本文的任何问题。
如果您是完全托管的 VPS 服务器, Cloud 专用,VMWare 私有 Cloud, 私有父服务器, 托管 Cloud 服务器或专用服务器所有者,并且您对执行列出的任何步骤感到不舒服,可以通过电话联系我们 @800.580.4985,a 聊天 或支持票以协助您完成此过程。