Python 2.7 在python中,如何将循环数据从一个函数传递到另一个函数?

Python 2.7 在python中,如何将循环数据从一个函数传递到另一个函数?,python-2.7,Python 2.7,我试图将多行列表从一个函数传递到另一个函数,但我不知道如何完成。以下是我目前掌握的代码: def readfile(): '''Read a text file; return a string holding the text''' f = open("numbers.txt", 'r') line = f.readlines() f.close() return line def dataConversio

我试图将多行列表从一个函数传递到另一个函数,但我不知道如何完成。以下是我目前掌握的代码:

def readfile():
'''Read a text file; return a string holding the text'''
    f = open("numbers.txt", 'r')
    line = f.readlines()             
    f.close()           
    return line  

def dataConversion(lines):

    lst = []
    for element in lines:
        lst = element.strip()
        lst = map(int, lst)
        print lst        
return lst

def evenNumberList(lsts):
    print lsts

def main():    

    lines = readfile()   
    lsts = dataConversion(lines)
    doubledList = evenNumberList(lsts)

main()
dataConversion(lines)函数的输出为:

[4, 3, 8, 8, 5, 7, 6, 0, 1, 8, 4, 0, 2, 6, 2, 6]
[4, 3, 8, 8, 5, 7, 6, 0, 1, 8, 4, 1, 0, 7, 0, 7]
[4, 0, 1, 2, 8, 8, 8, 8, 8, 8, 8, 8, 1, 8, 8, 1]
[4, 5, 5, 2, 7, 2, 0, 4, 1, 2, 3, 4, 5, 6, 7, 7]
[4, 5, 3, 9, 9, 9, 2, 0, 4, 3, 4, 9, 1, 5, 6, 2]
[4, 9, 9, 2, 7, 3, 9, 8, 7, 1, 6, 0, 0]
[4, 9, 9, 2, 7, 3, 9, 8, 7, 0, 0, 1, 7]
[8, 0, 8, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 5, 8, 8, 3, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 4, 9, 1, 9, 4, 6, 9, 1, 5, 4, 4, 4, 9, 2, 3]
[5, 4, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 8]
[3, 7, 8, 2, 8, 2, 2, 4, 6, 3, 1, 0, 0, 0, 5]
[3, 7, 1, 4, 4, 9, 6, 3, 5, 3, 9, 8, 4, 3, 1]
[3, 7, 1, 4, 4, 9, 6, 3, 5, 3, 9, 8, 4, 3, 1]
[3, 7, 8, 7, 3, 4, 4, 9, 3, 6, 7, 1, 0, 0, 0]
[3, 7, 8, 7, 3, 4, 4, 9, 3, 6, 7, 1, 0, 0, 1]
[6, 0, 4, 1, 2, 7, 3, 9, 9, 0, 1, 3, 9, 4, 2, 4]
[6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7]
[6, 0, 1, 1, 0, 0, 0, 9, 9, 0, 1, 3, 9, 4, 2, 4]
[6, 0, 1, 1, 0, 0, 0, 9, 9, 0, 1, 3, 9, 4, 2, 4]
而evenNumberList(lsts)函数的输入为:

[4, 3, 8, 8, 5, 7, 6, 0, 1, 8, 4, 0, 2, 6, 2, 6]
[4, 3, 8, 8, 5, 7, 6, 0, 1, 8, 4, 1, 0, 7, 0, 7]
[4, 0, 1, 2, 8, 8, 8, 8, 8, 8, 8, 8, 1, 8, 8, 1]
[4, 5, 5, 2, 7, 2, 0, 4, 1, 2, 3, 4, 5, 6, 7, 7]
[4, 5, 3, 9, 9, 9, 2, 0, 4, 3, 4, 9, 1, 5, 6, 2]
[4, 9, 9, 2, 7, 3, 9, 8, 7, 1, 6, 0, 0]
[4, 9, 9, 2, 7, 3, 9, 8, 7, 0, 0, 1, 7]
[8, 0, 8, 4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 5, 8, 8, 3, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 4, 9, 1, 9, 4, 6, 9, 1, 5, 4, 4, 4, 9, 2, 3]
[5, 4, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 8]
[3, 7, 8, 2, 8, 2, 2, 4, 6, 3, 1, 0, 0, 0, 5]
[3, 7, 1, 4, 4, 9, 6, 3, 5, 3, 9, 8, 4, 3, 1]
[3, 7, 1, 4, 4, 9, 6, 3, 5, 3, 9, 8, 4, 3, 1]
[3, 7, 8, 7, 3, 4, 4, 9, 3, 6, 7, 1, 0, 0, 0]
[3, 7, 8, 7, 3, 4, 4, 9, 3, 6, 7, 1, 0, 0, 1]
[6, 0, 4, 1, 2, 7, 3, 9, 9, 0, 1, 3, 9, 4, 2, 4]
[6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7]
[6, 0, 1, 1, 0, 0, 0, 9, 9, 0, 1, 3, 9, 4, 2, 4]
[6, 0, 1, 1, 0, 0, 0, 9, 9, 0, 1, 3, 9, 4, 2, 4]

我怎样才能使它们匹配?我需要evenNumberList(lsts)函数中的所有代码行,而不仅仅是一行。我的教授告诉我,我需要从循环中调用函数,但我还不知道怎么做。

我会这样编写代码:

def dataConversion(lines):
  temp = []

  for element in lines:
    converted = map(int, element.strip())
    temp.append(converted)

  return temp

def evenNumberList(lsts):
  return lsts

if __name__ == '__main__':
  lines = open("numbers.txt", 'r').readlines()   
  lsts = dataConversion(lines)
  doubledList = evenNumberList(lsts)

  print lsts
  print doubledList
您遇到的主要问题是正确使用
return
<代码>打印为
返回
。您的
evenNumberList()
函数完全没有返回任何内容

另外,在
dataConversion()
中,您在一个空列表上使用了
map()
,这也不会产生实际输出


我的经验法则是:不要在这样的函数中使用
print
语句。将它们从函数中取出并放入实际的程序中,因为这样更容易捕获错误。

我会这样编写代码:

def dataConversion(lines):
  temp = []

  for element in lines:
    converted = map(int, element.strip())
    temp.append(converted)

  return temp

def evenNumberList(lsts):
  return lsts

if __name__ == '__main__':
  lines = open("numbers.txt", 'r').readlines()   
  lsts = dataConversion(lines)
  doubledList = evenNumberList(lsts)

  print lsts
  print doubledList
您遇到的主要问题是正确使用
return
<代码>打印为
返回
。您的
evenNumberList()
函数完全没有返回任何内容

另外,在
dataConversion()
中,您在一个空列表上使用了
map()
,这也不会产生实际输出

我的经验法则是:不要在这样的函数中使用
print
语句。将它们从函数中取出并放入实际程序中,因为这样更容易捕捉错误。

dataConversion()
中,每次循环都要重新绑定
lst
变量,因此只返回最后一次迭代结果的数据

主循环表明,您希望从该函数中获得的是
lsts
,或者多个列表,但您只返回一个列表

要开始,您应该在
dataConversion()
中创建一个作为返回值的变量,可以将其称为
lsts
listoflists
,然后在for循环中执行
lsts.append(lst)
其中
lst
是当前从
dataConversion()
中的
元素创建的整数列表,每次循环都要重新绑定
lst
变量,因此只返回最后一次迭代结果的数据

主循环表明,您希望从该函数中获得的是
lsts
,或者多个列表,但您只返回一个列表


要开始,您应该在
dataConversion()
中创建一个作为返回值的变量,可以将其称为
lsts
listoflists
,然后在for循环中执行
lsts.append(lst)
其中
lst
是当前从
元素创建的整数列表

谢谢您的帮助。我意识到印刷品不会被退回。打印的唯一原因是我可以看到我的输出。我发布代码时忘了删除它。此外,我的evenNumberList()函数还不应该返回任何内容。我仍在尝试将正确的数据输入其中。一旦我得到了正确的数据,我会做我必须做的事情,以获得我需要的输出。我在这学期的学习还不够深入,不知道名字和主语是什么,所以我不能用它们,但我现在知道我错在哪里了。再次感谢您。在运行Python文件时,将运行
if\uuuuu name\uuuu='\uuuu main\uuuu'
中的内容。感谢您的帮助。我意识到印刷品不会被退回。打印的唯一原因是我可以看到我的输出。我发布代码时忘了删除它。此外,我的evenNumberList()函数还不应该返回任何内容。我仍在尝试将正确的数据输入其中。一旦我得到了正确的数据,我会做我必须做的事情,以获得我需要的输出。我在这学期的学习还不够深入,不知道名字和主语是什么,所以我不能用它们,但我现在知道我错在哪里了。再次感谢您。在运行Python文件时,将运行
if\uuuu name\uuu=='\uuu main\uuuu'
中的内容。非常感谢您的帮助。我想我现在可以把事情弄清楚了。@AbigailHackney-没问题,如果我的答案能帮助你点击答案旁边复选标记的轮廓。非常感谢你的帮助。我想我现在可以把事情弄清楚了。@AbigailHackney-没问题,如果我的答案能帮助你点击答案旁边复选标记的轮廓。