我有一个如下功能
def f(xs):
i = 0
r=[]
while -len(xs) < i< len(xs):
i,v = xs[i]
r.append(v)
return r
我想知道我是否可以完全了解该功能是如何工作的,因为我一直试图绕过while循环并附加功能,但我有一个完整的大脑放屁。
我还可以得到一个解释,为什么下面的输入返回一个非终止执行
zs = f([(1, 'a'), (-2, 'b'), (4,'c'), (-2, 'd')])
答案 0 :(得分:1)
此功能可以:
xs
-len(xs) < i< len(xs)
为True
,就保持循环,
意思是,只要i
超过-len(xs)
(您传递给xs
的{{1}}列表的长度为负数) AND 小于{ {1}}也是。在此f
循环中:
a - 从列表len(xs)
的每个元素中读取两个值(假设是一个
你给我们一个使用它的例子,然后将它分配给while
和xs
b - 将每个i
添加到列表v
(v
)
返回列表r
现在,关于你的例子并基于上面的解释,我不知道它是如何进行非终止执行的,因为while循环的条件是r.append(v)
到达之后元组(4,&#39; c&#39;)当-4&lt; 4&lt; 4是r
条件。
因此,最后,False
功能会向您返回一个列表:[&#39; a&#39;,&#39; b&#39;&#39; c&#39;]
答案 1 :(得分:-1)
使用pythontutor - 这是一个逐行浏览代码的工具,您将看到发生了什么。