簡體   English   中英

將元組添加到 if 循環中的列表(python)

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM