我应该改变我的功能

what should I change in my function

list_1  =[1, 2, 3, 4 ]

def fun(list_1):
    for each value in list1:
        # perform some operation and create a new data frame(pandas) for each value in the list
        # so in total I should get 4 data frames.
        print each_value

        return new_data_frame

当我 运行 fun(list_1) 我应该得到 4 个数据帧:

1
data_frame_1

2
data_frame_2

3
data_frame_3

4
data_frame_4

但我得到的输出只有第一个值。

1
data_frame_1

那么我应该在我的函数中更改什么。

当你从函数中return,它就结束了。
你超出了功能,仅此而已。

您可以使用 a generator 来实现您想要的,或者您可以 return tuplelist


使用生成器:

def fun(list_1):
    for each_value in list_1:
        # perform some operation and create a new data frame(pandas) named "new_data_frame" for each value in the list
        print each_value
        yield new_data_frame

for data_frame in fun(list_1):
    # Do something with the data frame "data_frame"

这将每次打印值,并且 return 您的数据框。 但它 return 是一个生成器,因此您必须多次调用该函数。你不能真正做的是让你的数据帧进入循环而不想将它们存储在列表中或同化或只调用一次函数。


一个更简单的列表方式可以是:

def fun(list_1):
    data_frames = []
    for each_value in list1:
        # perform some operation and create a new data frame(pandas) named "new_data_frame" for each value in the list
        print each_value
        data_frames.append(new_data_frame)

return data_frames

作为参考,我建议你看看What does the "yield" keyword do in Python? 这对你来说可能很有趣。