Please HELP!!
I have a list:
a = ['False', 'False', 'True', 'True', 'True', 'False', 'False', 'True', 'True']
I want to generate iteration number if it’s False the number continues and if it’s True the number stays. I Try this code:
result = []
x = 1
for i in a:
while i == 'False':
result.append(x)
if i == 'True':
x+=1
continue
result.append(x)
x += 1
it’s just keep running and did not show any output.
the desired output will be [1,2,3,3,3,4,5,6,6]
I have no idea what’s wrong with it Thanks
Advertisement
Answer
Yet another version of this (with the output behaving as required by OP):
def weird_sequence(some_list):
prev = None
number = 0
for item in some_list:
if prev is None:
prev = "False"
if item == "False" or prev == "False":
number += 1
yield number
prev = item
Usage:
>>> list(weird_sequence(['False', 'False', 'True', 'True', 'True', 'False', 'False', 'True', 'True'])) [1, 2, 3, 3, 3, 4, 5, 6, 6]