使用 for if break 语句在列表中追加值

Using a for if break statement to append values in a list

我正在使用循环,我遇到了一个问题,所以我有一个简单的 for loop,它在 0 和 1 之间附加随机值,基本上我需要的是不断添加值,直到达到一定数量出现0或1,例如:

iteration 1 = [0]
iteration 2 = [0,1]
...
iteration 6 = [0,1,1,1,1,1] #Here appear five 1's so I break the loop (it can be another number not necessarily 5 ones or 5 zeros)

for loop 非常简单:

import numpy as np

value = []
for i in range(5):
    value.append(np.random.randint(0, 2))
    print(value)

这是我尝试使用 if-break 语句

打破循环的方法
value = []
for i in range(5):
    if value == value:
        value.append(np.random.randint(0, 2))
    else
        break

    print(value) 

我最大的问题是我不知道如何指定条件,如果出现特定数量的 0 或 1 会中断循环,所以我希望你能指出正确的方向。提前致谢!

使用两个变量来跟踪随机数生成的 0 和 1 的数量 getter。

然后,在 for 循环中使用 if 语句逻辑在适当的地方添加或中断

你可以数一数要打破的数字。

value = []
count = [0, 0]
while True:
    value.append(np.random.randint(0, 2))
    count[value[-1]] += 1
    if count[1] == 5: # or something like that
        break

编辑:如果您需要连续的值,您可以在不需要的值出现时相应地重置计数。

    count[value[-1]] += 1
    count[1 - value[-1]] = 0

在这种情况下,当您不确定需要多少次迭代时,使用 while 循环是事实上的标准 你可以有两个变量作为最大允许数量,对于这个例子,我使用 numOnes as 5numbZeros as 3,使用 While True 循环并在每次迭代时检查条件,如果条件不满足则中断'满足。

import numpy as np
numOnes = 5
numZeros = 3
value = []
while True:
    value.append(np.random.randint(0, 2))
    print(value)
    if value.count(0) >= numZeros or value.count(1)>=numOnes:
        break

由于您通常会询问 break 语句,所以我使用了 if 条件,否则您可以只使用 while 循环本身的条件,例如 while value.count(0) >= numZeros or value.count(1)>=numOnes:

此外,如果您使用 for 循环,因为您只需要指定的迭代次数,那么您的循环很好,您不需要使用 while 循环,只需添加 if 循环出口处的条件:

import numpy as np
numOnes = 5
numZeros = 3
value = []
for i in range(5):
    value.append(np.random.randint(0, 2))
    print(value)
    if value.count(0) >= numZeros or value.count(1)>=numOnes:
        break