如何使用 Python 输出嵌套循环的结果

Ana*_*Ana 3 python loops for-loop dataframe pandas

我有一个带有 3 个参数的函数。我想计算该函数并输出每个参数组合的结果。

我已经定义了我的函数F(A,B,C),现在我们可以假设它的输出是一个单一的值f(A,B,C)

然后我运行一个嵌套循环:

for A in range(1,2):
    for B in range(4,5):
        for C in range(7,8,9):
            F(A,B,C)
Run Code Online (Sandbox Code Playgroud)

但它会覆盖。我想要的是这样的数据框:

A   B   C   Output
1   4   7   f(1,4,7)
1   4   8   f(1,4,8)
1   4   9   f(1,4,9)
1   5   7   f(1,5,7)
1   5   8   f(1,5,8)
1   5   9   f(1,5,9)
2   4   7   f(2,4,7)
2   4   8   f(2,4,8)
2   4   9   f(2,4,9)
2   5   7   f(2,5,7)
2   5   8   f(2,5,8)
2   5   9   f(2,5,9)
Run Code Online (Sandbox Code Playgroud)

Kea*_*nge 5

range(x,y) 不包括值 y

例如range(1,3)包含数字[1,2] NOT [1,2,3]

for A in range(1,3):
    for B in range(4,6):
        for C in range(7,10):
            print(A,B,C)
Run Code Online (Sandbox Code Playgroud)

输出:

1 4 7
1 4 8
1 4 9
1 5 7
1 5 8
1 5 9
2 4 7
2 4 8
2 4 9
2 5 7
2 5 8
2 5 9
Run Code Online (Sandbox Code Playgroud)

这是你的范围在做什么

  • range(1,2) --> [1]
  • range(4,5) --> [4]
  • range(7,8,9) --> [7] (这个更讨厌,因为第三个参数是步长值)

正如您所看到的,您只是创建了只有一个项目的 3 个范围,因此当您遍历它时,它永远不会像您想要的那样重复,因为每个范围只有一个值

这就是为什么如果您将 F 更改为打印,您的程序输出 (1,4,7) 然后终止。在我的示例中,我将每个范围的第二个参数增加了 1以获得您想要的结果。


使其成为数据框:

listData = []
for A in range(1, 3):
    for B in range(4, 6):
        for C in range(7, 10):
            listData.append([A,B,C, A+B+C]) #I just used A+B+C instead of the func f

df = pandas.DataFrame(columns = ["A", "B", "C", "Output"], data = listData)
print(df)
Run Code Online (Sandbox Code Playgroud)