[英]adding tuples to a list in an if loop (python)
我正在 python 中使用 symbulate 進行概率課程並運行一些模擬。
設置:A 和 B 兩支球隊正在參加“n 局最佳”系列賽,其中 n 是奇數。 在這個例子中,n=7,A 隊贏得任何一場比賽的概率是 0.55。 假設 A 隊贏得第一場比賽,估計他們贏得系列賽的概率。
這是我到目前為止所得到的,我認為這是正確的:
model = BoxModel([1, 0], probs=[0.55, .45], size=7, replace=True)
test = model.sim(10000)
for x in range(0,10000):
test1 = test[x]
if test1[0] == 1:
print (test1)
test1
最后兩行是我遇到困難的地方。 這種'for' 和'if' 組合使得只顯示以'1' 開頭的輸入(即A 隊贏得第一場比賽)。 我需要將這些輸入保存到一個表中,以便我可以對其進行一些進一步的測試。
當這些循環正在運行時,如何將 test1 的值輸入到表中? 目前,test1 只輸出 x=10,000 的值。
編輯:“測試”產生一個列表,0-10000,所有可能的游戲結果。 我需要一個僅包含以“1”開頭的游戲結果的列表。
Edit2:“test”的輸出(在我運行“for”或“if”之前)看起來像:
Index Result
0 (1, 1, 1, 0, 0, 1, 1)
1 (0, 1, 0, 1, 1, 0, 0)
2 (1, 1, 1, 1, 0, 1, 0)
3 (0, 0, 1, 1, 1, 1, 1)
4 (0, 0, 0, 0, 0, 0, 0)
5 (1, 1, 0, 1, 0, 0, 1)
6 (0, 0, 1, 0, 1, 1, 1)
7 (0, 1, 0, 0, 0, 0, 1)
8 (1, 1, 0, 1, 0, 1, 0)
... ...
9999 (1, 1, 0, 1, 0, 0, 0)
我需要一個“測試”(或另一個變量)來包含看起來完全一樣的東西,但只包含以“1”開頭的行。
所以您要存儲每個測試的結果? 為什么不將它們存儲在list
?
test1_results = []
for x in range(0,10000):
test1 = test[x]
# check if first element in sequence of game outcomes is a win for team A
if test1[0] == 1: # or '1' if you're expecting string
test1_results.append(test1)
您可以運行print(test1_results)
來打印整個結果列表,但如果要打印前n
結果,請執行print(test1_results[:n])
。
如果你想要你的if
語句在那里,你將不得不稍微調整位置。 你的test
對象是什么樣的? 你能給我們一個小樣本嗎?
編輯:更新if
語句以反映下面的評論
根據您的評論:
results_that_start_with_one = []
for result in test:
result_string = str(result)
if result_string[0] == "1":
results_that_start_with_one.append(result_string)
這將遍歷列表“測試”中的每個結果。 它將每個轉換為一個字符串(我假設它們是一些數值)。 然后它取字符串中的第一個字符,並詢問它是否為 1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.