向if循环中的列表添加元组(python)

2024-04-20 06:10:59 发布

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

我正在用python和symbulate学习概率课程,并运行一些模拟。你知道吗

设置:两支球队,A和B,正在进行一个“n中最好的”锦标赛系列赛,其中n是一个奇数。在这个例子中,n=7,A队赢得任何一场比赛的概率为0.55。假设A队赢了第一场比赛,则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=10000th值。你知道吗

编辑:“测试”产生一个列表,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)

我需要一个“test”(或另一个变量)来包含与之完全相同的内容,但只包含以“1”开头的行。你知道吗


Tags: test游戏列表formodelif概率例子
2条回答

所以你想储存每个测试的结果?为什么不把它们存储在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)

这将遍历列表“test”中的每个结果。它将每个字符串转换为一个字符串(我假设它们是一些数值)。然后它接受字符串中的第一个字符,并询问它是否为1。你知道吗

相关问题 更多 >