本教程通过几个实际示例介绍了在 python 中执行循环的各种方法。阅读本教程后,您将熟悉循环的概念,并将能够在现实世界的数据整理任务中应用循环。
目录
什么是循环?
循环是一个重要的编程概念,几乎存在于所有编程语言中(Python、C、R、Visual Basic 等)。它用于多次重复特定操作,直到满足特定条件。它主要用于自动化重复性任务。
现实世界中的循环示例
- ATM 机的软件会循环处理一笔又一笔的交易,直到您确认没有更多事情可做。
- 移动设备中的软件程序允许用户通过 5 次密码尝试来解锁移动设备。之后它会重置移动设备。
- 您将您最喜欢的歌曲置于重复模式。这也是一个循环。
- 您希望对数据集的每一列运行特定的分析。
For 循环 Python - 语法和示例
与 R 和 C 编程语言一样,您可以 在 Python 中使用for 循环。 它是自动执行重复任务的最常用循环方法之一。
**for循环如何工作?**假设您被要求打印从 1 到 9 的数字序列,增量为 2。
for i in range(1,10,2):
print(i)
输出
1
3
5
7
9
range(1,10,2)表示从 1 开始到 9(不包括 10)结束,递增 2。
列表迭代
本节介绍如何在列表上 运行for in 循环。
mylist = [30,21,33,42,53,64,71,86,97,10]
for i in mylist:
print(i)
输出
30
21
33
42
53
64
71
86
97
10
假设您需要选择列表中的每第三个值。
for i in mylist[::3]:
print(i)
输出
30
42
71
10
mylist[::3]相当于mylist[0::3] ,它遵循这种语法风格list[start:stop:step]
示例 1:创建一个新列表,其中仅包含列表中 0 到 10 之间的项目
l1 = [100, 1, 10, 2, 3, 5, 8, 13, 21, 34, 55, 98]
new = [] #Blank list
for i in l1:
if i > 0 and i <= 10:
new.append(i)
new
Output: [1, 10, 2, 3, 5, 8]
也可以通过numpy 包通过将列表创建为 numpy 数组来完成。请参阅下面的代码。
将 numpy 导入为 np
k=np.array(l1)
new=k[np.where(k<=10)]
示例 2:检查字符串中提到了哪个字母表 (az) 假设您有一个名为k
的字符串,并且您想要检查字符串 k 中存在哪个字母表。
k = "deepanshu"
import string
for n in string.ascii_lowercase:
if n in k:
print(n + ' exists in ' + k)
else:
print(n + ' does not exist in ' + k)
实际示例:Python 中的 for in 循环
创建示例 pandas 数据框架以进行说明。
import pandas as pd
np.random.seed(234)
df = pd.DataFrame({"x1" : np.random.randint(low=1, high=100, size=10),
"Month1" : np.random.normal(size=10),
"Month2" : np.random.normal(size=10),
"Month3" : np.random.normal(size=10),
"price" : range(10)
})
df
1. 将每个月列乘以 1.2
for i in range(1,4):
print(df["Month"+str(i)]*1.2)
range(1,4) 返回 1、2 和 3。
str( ) function is used to covert to string.“Month”+ str(1) 表示 Month1。
2. 将计算列存储在新数据框中
import pandas as pd
newDF = pd.DataFrame()
for i in range(1,4):
data = pd.DataFrame(df["Month"+str(i)]*1.2)
newDF=pd.concat([newDF,data], axis=1)
pd.DataFrame( ) is used to create blank data frame.pandas 包中的 concat() 函数用于连接两个数据帧。
3. 检查x1 的值是否>= 50,将每月成本乘以价格。否则与月份相同。
import pandas as pd
import numpy as np
for i in range(1,4):
df['newcol'+str(i)] = np.where(df['x1'] >= 50,
df['Month'+str(i)] * df['price'],
df['Month'+str(i)])
在此示例中,我们添加名为newcol1、newcol2 和 newcol3 的新列。
np.where(condition, value_if condition meets, value_if condition does not meet)用于构造 IF ELSE 语句。
4. 按列的每个唯一值过滤数据框并将其存储在单独的数据框中
mydata = pd.DataFrame({"X1" : ["A","A","B","B","C"]})
for name in mydata.X1.unique():
temp = pd.DataFrame(mydata[mydata.X1 == name])
exec('{} = temp'.format(name))
unique () 函数用于计算变量的不同值。exec () 函数用于动态执行Python程序。请参阅下面的 string format( ) 函数的用法 -
s= "Your Input"
"i am {}".format(s)
Output: 'i am Your Input'
循环控制语句
循环控制语句改变其正常迭代的执行。当执行离开作用域时,在该作用域中创建的所有自动对象都将被销毁。
Python 支持以下控制语句。
-
继续声明
-
中断语句
continue 语句
当执行 continue 语句时,它会跳过循环中的后续代码并继续迭代。
在下面的代码中,我们避免打印字母 a 和 d。
for n in "abcdef":
if n =="a" or n =="d":
continue
print("letter :", n)
letter : b
letter : c
letter : e
letter : f
Break 语句
当break 语句运行时,它会中断或停止循环。
在此程序中,当 n 为 c 或 d 时,循环停止执行。
for n in "abcdef":
if n =="c" or n =="d":
break
print("letter :", n)
letter : a
letter : b
带 else 子句的 for 循环
在for 循环 中 使用else 子句在 python 开发人员社区中并不常见。
else 子句 在循环完成后执行。这意味着循环没有遇到break语句。
下面的程序计算 2 到 10 之间的数字的因数。Else 子句返回没有因数的数字,因此是素数:
for k in range(2, 10):
for y in range(2, k):
if k % y == 0:
print( k, '=', y, '*', round(k/y))
break
else:
print(k, 'is a prime number')
2 是素数 3 是素数 4 = 2 * 2 5是质数 6 = 2 * 3 7是质数 8 = 2 * 4 9 = 3 * 32 is a prime number 3 is a prime number 4 = 2 * 2 5 is a prime number 6 = 2 * 3 7 is a prime number 8 = 2 * 4 9 = 3 * 3
While 循环
while 循环用于重复执行代码,直到满足条件。当条件为假时,执行程序中循环后面的行。
i = 1
while i < 10:
print(i)
i += 2 #means i = i + 2
print("new i :", i)
Output: 1 new i : 3 3 new i : 5 5 new i : 7 7 new i : 9 9 new i : 11
带有 If-Else 语句的 While 循环
If-Else 语句可以与 While 循环一起使用。请参阅下面的程序 -
计数器 = 1 而(计数器 <= 5): 如果计数器 < 2: print("小于2") elif 计数器 > 4: print("大于4") 别的: 打印(“>= 2 且 <= 4”) 计数器 += 1
counter = 1
while (counter <= 5):
if counter < 2:
print("Less than 2")
elif counter > 4:
print("Greater than 4")
else:
print(">= 2 and <=4")
counter += 1