python:可以在函数内部创建一个列表吗?

2024-09-23 22:31:37 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以在函数内部创建列表?我有一些命令想合并成一个新函数(运行时)。下面的代码可以正常工作并执行我希望它做的事情。我很难把它变成函数。在

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”从未真正定义过。我得到以下错误:

名称错误:未定义全局名称“firstList”

这是我代码的一个简短示例,但它说明了我的问题。我需要能够附加finalList,每次循环中从firstList派生出一个值。我的方法是在每次执行runRounds之前定义'firstList=[]',这样每次执行runRounds时firstList都是空的。但如果我试图在一个新函数中创建firstList,它将无法工作。我在下面的例子中尝试这个。我打赌有一个标准的方法来做我不知道的事情,我还是新来的-谢谢你的耐心。。。在

^{pr2}$

Tags: 函数代码inimportforrangerandom事情
1条回答
网友
1楼 · 发布于 2024-09-23 22:31:37

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

这里有一些代码可以工作

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变量和{},因为您正在函数中创建{}。你必须返回这两个以便以后可以访问

相关问题 更多 >