[英]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.