Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python输出嵌套循环的结果_Python_Loops_For Loop_Pandas_Dataframe - Fatal编程技术网

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

如何使用Python输出嵌套循环的结果,python,loops,for-loop,pandas,dataframe,Python,Loops,For Loop,Pandas,Dataframe,我有一个有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) 但它凌驾于此。我想要得到的是这样的数据帧: A B C Output 1 4 7 f(1,4,7) 1

我有一个有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)
但它凌驾于此。我想要得到的是这样的数据帧:

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)
范围(x,y)
不包括值y

例如
范围(1,3)
包含的数字
[1,2]
不是
[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)
输出:

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
这就是你们的靶场所做的

  • 范围(1,2)
    -->[1]
  • 范围(4,5)
    -->[4]
  • 范围(7,8,9)
    -->[7](这一个更糟糕,因为第三个参数是阶跃值)
正如您所看到的,您只是用一个项目创建了3个范围,所以当您循环时,它不会像您希望的那样重复,因为每个范围只有一个值

这就是为什么如果将F更改为print,程序输出(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)

我的建议是使用

正如您所看到的,上面的代码避免了使用嵌套循环

您现在可以执行以下操作:

for arg in args:
    arg.append(my_func(*arg))
df = pandas.DataFrame(args, columns=['A', 'B', 'C', 'SUM'])

谢谢,你说得对,那是个愚蠢的错误。在实际情况中,我使用的是
[val1,val2,val3]
,因为它不是一个连续的列表。我可以通过打印(A,B,C,F(A,B,C))打印输出,但不知道如何将其设置为数据帧。对不起,我误解了您的问题,我现在编辑了我的答案,以显示它正在转换为数据帧。您也可以执行
[x+(my_func(*x),)for…]
以摆脱再次循环或将每个元素转换为列表的需要。
for arg in args:
    arg.append(my_func(*arg))
df = pandas.DataFrame(args, columns=['A', 'B', 'C', 'SUM'])