【问题标题】:Python Import a List from Another FilePython 从另一个文件导入列表
【发布时间】:2021-09-09 06:21:08
【问题描述】:

(检查下面的更新)

我在从另一个文件导入列表时遇到问题。 我还在学习如何在函数中调用/传递变量。

我有一个和这个例子非常相似的东西,

#file1
list_one = [] #global
list_two = [] #global

def function_list_one():
# code
    return list_one

def function_list_two(list_one, list_two):
# code
    return list_two

def both_lists(list_one, list_two):
# code
    return new_list
    # return new_list outputs a JSON list

both_lists(list_one, list_two) # this is used to call it from main

到目前为止,如果我打印这个新列表,它可以在这个文件中使用。它打印我想要的。但是,如果我尝试做接下来的几件事,那么它只会打印一个空列表。最后一次来自 file1 是我使用这些参数调用该函数的主文件。

#file2
from file1 import both_lists, list_one, list_two

new_list = both_lists(list_one, list_two)
new_list2 = list_two
print(new_list)
# outputs = []
prin(new_list2)
#outputs = []

# Expected output should be the results from new_list from file1, which 
# would be a JSON type list.

这是没有任何事情发生的地方。如果我尝试这两种方法,它们会返回一个空列表。我知道我对 list_one 和 list_two 都有一个全局变量。我不明白为什么当我在另一个程序中使用相同的方法时它返回一个空列表。基本上,我想在 fil2 中使用“return new_list”来继续程序的其余部分。

更新: 我找到了解决方案。不知何故,当我导入 new_lists 时 file2 它不喜欢它。所以,我只是import both_lists(function_list_one(), function_list_two())

感谢大家的宝贵时间!

【问题讨论】:

  • 我认为,您需要提供更多信息。列表是如何填充的,new_list 是如何生成的?
  • 说“我尝试了其他方法但它没有用”是没有帮助的,因为我们不知道您尝试了什么。向我们展示您尝试过的实际代码,向我们展示您获得的输出,并解释它为什么不是您想要的。
  • 我确实展示了我尝试过但不起作用的实际代码。它在file2中
  • “没用”没有帮助。向我们展示该代码做了什么,并解释您想要什么
  • 我添加了更多信息。

标签: python arrays list function


【解决方案1】:

看起来您是按照定义导入列表,而不是按照您的 function_list_* 函数构建的那样。

当您导入 list_onelist_two 时,您将它们作为空列表导入,因为文件 1 有它们:

list_one = [] #global
list_two = [] #global

如果 both_lists() 只是附加它们,那么您在文件 2 中为 new_list 得到的只是附加在一起的两个空列表,或者只是另一个空列表。

我认为您所追求的是附加function_list_one(list_one)function_list_two(list_two) 的结果。有很多方法可以实现,但也许最简单的方法是重新定义 both_lists() 以执行以下操作:

def both_lists(list_one, list_two):
    # Code
    return function_list_one(list_one) + function_list_two(list_two)

然后,当您导入 both_lists 时,您还导入了为您的列表构建函数定义的功能。

总结一下:

正如所写,您的导入正在导入这些项目:

  • list_one = []
  • list_two = []
  • both_lists,我假设它只是附加了 list_onelist_two

function_list_one()function_list_two() 中的代码不会执行,除非您导入并调用这些函数,或者将它们的功能包含在您导入的内容中 - 然后调用它。

我上面的建议只是解决这个问题的一种方法,这是假设我正确阅读了您的代码!不过,希望这会有所帮助。 :^)

【讨论】:

  • 关于您的回答。这基本上就是我对return new_lists 所做的。我在both_list() 函数中做了一些事情,基本上对list_onelist_two 进行一些比较并删除特定键并将它们附加到new_list。正如我上面评论的那样,如果我在 file1 中打印new_lists,它会返回我正在寻找的答案。所以,我在 file2 中的方法是错误的,我不知道为什么,因为我在另一个程序上使用了那个确切的方法并且它有效。除了在那个程序中我使用文件而不是列表/数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 2017-09-12
  • 2018-11-06
相关资源
最近更新 更多