Python 具有真假条件的迭代数
请帮忙 我有一份清单:Python 具有真假条件的迭代数,python,loops,for-loop,while-loop,Python,Loops,For Loop,While Loop,请帮忙 我有一份清单: a = ['False', 'False', 'True', 'True', 'True', 'False', 'False', 'True', 'True'] 我想生成迭代数,如果为False,则该数继续,如果为True,则该数保持不变。 我尝试以下代码: result = [] x = 1 for i in a: while i == 'False': result.append(x) if i == 'True':
a = ['False', 'False', 'True', 'True', 'True', 'False', 'False', 'True', 'True']
我想生成迭代数,如果为False,则该数继续,如果为True,则该数保持不变。
我尝试以下代码:
result = []
x = 1
for i in a:
while i == 'False':
result.append(x)
if i == 'True':
x+=1
continue
result.append(x)
x += 1
它只是继续运行,没有显示任何输出。
所需输出为[1,2,3,3,3,4,5,6,6]
我不知道它怎么了
谢谢参见下面的代码:
a = ['False', 'False', 'True', 'True', 'True', 'False', 'False', 'True', 'True']
result = []
x = 0
for i in a:
if i == 'False':
x+=1
result.append(x)
print (result)
请注意,如果我理解了您的文本,您希望的输出是不正确的这实际上可以通过
itertools中的accumulate
很好地解决
from itertools import accumulate
a = ['False', 'False', 'True', 'True', 'True', 'False', 'False', 'True', 'True']
print(list(accumulate(1 if i == 'False' else 0 for i in a)))
与gtomer的结果相同,我认为这是正确的输出。代码中的错误是,一旦我将值设为“False”,它将进入(无限)while循环,并且永远不会出现。Bcz i的值在while循环本身中从不改变
result = []
x=1
for i in a:
if i=="False":
x+=1
result.append(x)
这应该适用于您这是另一个版本(输出行为符合OP的要求):
用法:
>>> list(weird_sequence(['False', 'False', 'True', 'True', 'True', 'False', 'False', 'True', 'True']))
[1, 2, 3, 3, 3, 4, 5, 6, 6]
为什么在for循环的迭代中,i
会改变?一旦出现'False'
,您就陷入了无限循环。您是否尝试调试代码?结果。在继续后追加(x)
将永远不会执行,而您的语句是循环人。。。如果出现'False'
如何操作,它将永远运行?我迭代列表中的值。然后,当i=='False'时,每个数字都存储在结果中,然后当迭代发现i=='True'时,数字保持不变并继续,直到列表结尾我的代码给出正确的输出:[1,2,2,2,3,4,4,4],它应该是[1,2,3,3,3,4,5,6,6]但是如果你计算错误,那么为什么是1,2,然后是3而不是2?当值在迭代中也改变+1时,如果下一个值仍然是“真”,那么它保持输出应该是[1,2,3,3,4,5,6,6]。该代码将给出[1,2,2,2,2,3,4,4]
>>> list(weird_sequence(['False', 'False', 'True', 'True', 'True', 'False', 'False', 'True', 'True']))
[1, 2, 3, 3, 3, 4, 5, 6, 6]