是否可以在函数内创建列表?我有一些命令,我想整合到一个新函数(runTimes)。下面的代码可以工作并完成我想要它做的事情。我无法将其转换为函数。
import numpy as np
import random
numRounds = 10
numTimes = 5
finalList = []
# First Function
def runRounds(numberOfRounds):
for xRound in range(numberOfRounds):
if random.randint(0,100) >= 85:
firstList.append(1)
else:
firstList.append(0)
finalList.append(max(firstList))
# Run some # of times
for time in range(numTimes):
firstList = []
runRounds(numRounds)
print firstList
print finalList
我不能只是缩进我的代码来创建一个可用的函数。在下面的示例中,我尝试这样做但它失败了因为' firstList'从来没有真正定义我的假设。我收到以下错误:
NameError:全局名称' firstList'未定义
这是我的代码的缩写示例,但它说明了我的问题。我需要能够在循环中每次从firstList追加一个带有单个值的finalList。我这样做的方法是定义' firstList = []'每次执行runRounds之前,每次runRounds执行时firstList都为空。但是,如果我尝试在新函数中创建firstList,它将无法工作。我在下面的例子中试试。我打赌有一种标准的方法可以做我需要做的事情,我不知道,我还是新的 - 感谢你的耐心...
import numpy as np
import random
numRounds = 10
numTimes = 5
finalList = []
# First Function
def runRounds(numberOfRounds):
for xRound in range(numberOfRounds):
if random.randint(0,100) >= 85:
firstList.append(1)
else:
firstList.append(0)
finalList.append(max(firstList))
# Run some # of times
def runTimes(numberofTimes):
for time in range(numTimes):
firstList = []
runRounds(numRounds)
print firstList
runTimes(numTimes)
print finalList
答案 0 :(得分:3)
在函数中创建的变量不是全局变量,因此您无法随时访问它们。
以下是可行的代码
import numpy as np
import random
numRounds = 10
numTimes = 5
finalList = []
def runRounds(numberOfRounds, firstList, finalList):
for xRound in range(numberOfRounds):
if random.randint(0,100) >= 85:
firstList.append(1)
else:
firstList.append(0)
finalList.append(max(firstList))
return (firstList, finalList)
def runTimes(numTimes, numRounds, finalList):
for time in range(numTimes):
firstList = []
firstList, finalList = runRounds(numRounds, firstList, finalList)
print(firstList)
return (firstList, finalList)
firstList, finalList = runTimes(numTimes, numRounds, finalList)
print(finalList)
当您运行runRounds
时,您需要将列表作为参数传递,因为您没有在函数中创建任何列表。最后,您需要返回列表,以便以后访问它们。
对于runTimes
,您需要传递先前创建的numRounds
变量和finalList
,因为您正在函数中创建firstList
。您必须返回这两个,以便以后可以访问它们,