繁体   English   中英

python:是否可以在函数内创建一个列表?

[英]python: Is it possible to create a list inside of a function?

是否可以在函数内创建一个列表? 我有一些命令要整合到一个新函数(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。 我这样做的方法是在每次执行runRounds之前定义'firstList = []',以便每次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

在函数中创建的变量不是全局变量,因此您无法随时访问它们。

这是可行的代码

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 你必须返回这两个,以便以后访问它们,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM