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



我正在处理循环,我遇到了一个问题,所以我有一个简单的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出现,就会打破循环,所以我希望你能给我指一个正确的方向。提前谢谢!

在这种情况下,当您不知道需要确切的迭代次数时,使用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 value.count(0) >= numZeros or value.count(1)>=numOnes:一样使用while循环本身的条件

此外,如果您使用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

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

然后,在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

最新更新