def uncompress(xs):
zs = []
b = True
for k in xs:
zs.extend([b for i in range(k)])
b = not b
return zs
在任何情况下,只想知道在for循环之前有变量或条件是什么,所以在这种情况下,范围内的'b'是什么呢。
答案 0 :(得分:0)
自b = True
以来,zs.extend([b for i in range(k)])
实际上是zs.extend([True for i in range(k)])
或zs.extend([True, True, ..., True (k times)])
。
更新。我假设预期的(缩进的)代码如下:
def uncompress(xs):
zs = []
b = True
for k in xs:
zs.extend([b for i in range(k)])
b = not b
return zs
然后,如果xs
是[2, 1, 3]
,那么:
在第一次for循环执行后(所谓的"迭代"),zs = [] + [True, True] = [True, True]
和b
变为False
,
然后zs = [True, True] + [False] = [True, True, False]
和b
变为True
,
最后zs = [True, True, False, True, True, True]
和b
变为False
。
因此,如果xs == [s, t, u, v, ...]
则zs
为True
s
次,False
t
次,True
{{1} }次,u
False
次等等。