什么是 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))
该命令的输出如下。
root@host:~# python forloop1.py
Loop 0
Loop 1
Loop 2
root@host:~#
我们可以看到 for 循环运行固定次数的迭代 (0, 3),同时为每个完成的循环添加一个数字。 下一个 example,while 语句(使用布尔值 True)永远不会改变。
在 For 循环中使用范围语句
range() 函数有两组主要参数:
- 范围(停止) – Stop 表示要渲染的整数(或整数)的数量,从 0 开始。
- 范围([start], 停止[, step])
- 开始: 这是序列的开始编号。
- 停止: 生成的数字不超过该数字,但不包括该数字。
- 步:序列内的数字之间的差异。
在脚本中使用 range() 函数,我们可以定义一组循环来遍历该序列。 作为一个 example,我们可以将范围定义为 range(12)。 因为 Python 将 0 定义为范围(或索引列表)中的第一个数字,所以我们的 example 范围是 0 到 11,而不是 1 到 12。Python 是基于 0 索引的。 这意味着索引列表从 0 开始,而不是 1。最后,用户应注意所有参数应为正整数或负整数。
作为一个 example,在 range() 函数中指定起点和终点,如下所示,将生成一个从 4 到 7(5 个数字)的列表。
范围(4,7)
使用 forloop4.py 脚本,我们可以生成一个包含两个参数的范围。
#!/usr/bin/python3
for i in range(4, 7):
print(i)
脚本输出如下。
root@host:~# python forloop4.py
4
5
6
root@host:~#
使用以下 forloop3.py 脚本,我们可以输出 0-6 的单个数字列表。
#!/usr/bin/python3
for i in range(7):
print(i)
脚本输出如下。
root@host:~# python forloop3.py
0
1
2
3
4
5
6
root@host:~#
使用同样的方法,我们可以使用 forloop5.py 脚本来增加一个负数列表,增加三。
#!/usr/bin/python3
for i in range(0, -12, -3):
print(i)
脚本输出如下。
root@host:~# python forloop5.py
0
-3
-6
-9
root@host:~#
在 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
脚本输出如下。
root@host:~# 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
root@host:~#
最初的 for 循环运行了固定次数,因此在这种情况下它运行了 3 次。 同时,while 循环会一直运行,直到循环条件发生变化或受到限制器的影响。
在 For 字符串上使用循环语句
字符串可以产生一系列字符,因为它们被认为是可迭代的对象。 使用 forloop6.py 脚本,我们可以按顺序列出字符串。
#!/usr/bin/python3
for x in "watermelon":
print(x)
脚本输出如下。
root@host:~# python forloop6.py
w
a
t
e
r
m
e
l
o
n
root@host:~#
在 For 循环中使用 Break 语句
使用 break 语句时,我们可以在循环有机会遍历所有列出的项目之前停止循环。 使用 forloop7.py 脚本,我们可以在循环到达 Chevy 条目时终止脚本。
#!/usr/bin/python3
cars = ["Ford", "Chevy", "GM"]
for x in cars:
print(x)
if x == "Chevy":
break
脚本输出如下。
root@host:~# python forloop7.py
Ford
Chevy
root@host:~#
在 For 循环中使用 Continue 语句
如果我们使用 continue 语句,我们可以停止当前的迭代循环并继续下面的条目。 使用使用我们以前的汽车的 forloop8.py 脚本 example 将停止当前的迭代循环并继续列表中的下一个条目。
#!/usr/bin/python3
cars = ["Ford", "Chevy", "GM"]
for x in cars:
if x == "Chevy":
continue
print(x)
输出
root@host:~# python forloop8.py
Ford
GM
root@host:~#
在 For 循环中使用 Else 语句
for 循环中的 else 语句在循环完成时运行特定的代码块。 使用 forloop9.py 脚本,我们可以输出一个范围,然后在完成时打印消息“Done”。 用户应注意,如果 break 语句停止正在运行的循环,则不会执行 else 块。
#!/usr/bin/python3
for x in range(5):
print(x)
else:
print("Done.")
输出。
root@host:~# python forloop9.py
0
1
2
3
4
Done.
root@host:~#
在 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)
输出。
root@host:~# python forloop10.py
('Blue', 'Ford')
('Blue', 'Chevy')
('Blue', 'GM')
('Yellow', 'Ford')
('Yellow', 'Chevy')
('Yellow', 'GM')
('Red', 'Ford')
('Red', 'Chevy')
('Red', 'GM')
root@host:~#
在 For 循环中使用 Pass 语句
从技术上讲,for 循环不应为空。 如果我们必须将 for 循环留空,我们可以使用 pass 语句来防止错误。 使用 forloop11.py 脚本,我们在运行脚本时应该完全没有输出。
#!/usr/bin/python3
for x in[1, 2, 3]:
pass
输出。
root@merovingian2:~# python forloop11.py
root@merovingian2:~#
如果我们删除 pass 语句,这里是输出。
root@host:~# python forloop11.py
File "forloop11.py", line 3
^
IndentationError: expected an indented block
root@host:~#
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 个没有人的 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™ 中最乐于助人的人而自豪!
如果您对此信息有任何疑问,我们将始终每天 24 小时、每周 7 天、每年 365 天回答有关本文的任何查询。
如果您是完全托管的 VPS 服务器, Cloud 专用,VMWare 私有 Cloud私有父服务器, 托管 Cloud 服务器或专用服务器所有者,并且您对执行概述的任何步骤感到不舒服,可以通过电话@800.580.4985 联系我们, 聊天 或支持票以帮助您完成此过程。