第二章:25+ Python 数据操作教程(第十五节PYTHON 中的循环通过示例进行解释)持续更新中

131 阅读4分钟

本教程通过几个实际示例介绍了在 python 中执行循环的各种方法。阅读本教程后,您将熟悉循环的概念,并将能够在现实世界的数据整理任务中应用循环。

目录

什么是循环?

现实世界中的循环示例

For 循环 Python - 语法和示例

带 else 子句的 for 循环

While 循环


什么是循环?

循环是一个重要的编程概念,几乎存在于所有编程语言中(Python、C、R、Visual Basic 等)。它用于多次重复特定操作,直到满足特定条件。它主要用于自动化重复性任务。

现实世界中的循环示例

  1. ATM 机的软件会循环处理一笔又一笔的交易,直到您确认没有更多事情可做。
  2. 移动设备中的软件程序允许用户通过 5 次密码尝试来解锁移动设备。之后它会重置移动设备。
  3. 您将您最喜欢的歌曲置于重复模式。这也是一个循环。
  4. 您希望对数据集的每一列运行特定的分析。

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 支持以下控制语句。

  1. 继续声明

  2. 中断语句

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 * 3
2 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

​ ​ ​