【发布时间】:2021-07-22 20:04:27
【问题描述】:
我创建了一个函数来打印“True”元素的索引和长度。我设法给出了答案,但输出不断重复。
data = [True, True, False, False, True,
True, True, True, True, False,
False, True, True]
def find (stat, min):
newlist = []
start = 0
end = 0
x = [index for index, ele in enumerate(data) if ele]
for index,value in enumerate(x):
if index < len(x)-1:
if x[index+1]> value+1:
end = index +1
newlist.append(x[start:end])
start = end
else:
newlist.append(x[start: len(x)])
for i in newlist:
x = []
x = [i[0],len(i)]
print(x)
return x
for k in range(len(data)):
final = find(data[k],2)
print(final)
我想要的输出是 [[0,2],[4,5],[11,2]] 但输出给了我:
[0, 2]
[4, 5]
[11, 2]
[11, 2]
[0, 2]
[4, 5]
[11, 2]
[11, 2]
[0, 2]
[4, 5]
[11, 2]
[11, 2]
[0, 2]
[4, 5]
[11, 2]
[11, 2]
[0, 2]
[4, 5]
[11, 2]
[11, 2]
[0, 2]
[4, 5]
[11, 2]
[11, 2]
[0, 2]
[4, 5]
[11, 2]
【问题讨论】:
-
用您自己的话说,
for i in newlist:循环的预期目的是什么?用您自己的话来说,newlist变量的预期目的是什么?用你自己的话来说,return x的最终目的是什么?您期望返回什么,为什么?仔细追踪你的逻辑。 -
我不明白你所说的“'True'元素的索引和长度”是什么意思。
True不是序列,所以它没有长度。当你说答案应该是[[0,2],[4,5],[11,2]]时,背后的原因是什么? -
子列表的第一个数字是索引,第二个数字是'True'元素在序列的下一个数字(即3)被破坏之前的持续时间
-
那么,从该点开始的连续
True元素的数量? -
@Karl Knechtel 是的
标签: python