同时循环功能说明和一般输入说明

时间:2015-06-20 03:20:47

标签: python

我有一个如下功能

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')])

2 个答案:

答案 0 :(得分:1)

此功能可以:

  1. 读取参数xs
  2. 只要条件-len(xs) < i< len(xs)True,就保持循环, 意思是,只要i超过-len(xs)(您传递给xs的{​​{1}}列表的长度为负数) AND 小于{ {1}}也是。
  3. 在此f循环中:

    a - 从列表len(xs)的每个元素中读取两个值(假设是一个
    你给我们一个使用它的例子,然后将它分配给whilexs

    b - 将每个i添加到列表vv

  4. 返回列表r

  5. 现在,关于你的例子并基于上面的解释,我不知道它是如何进行非终止执行的,因为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 - 这是一个逐行浏览代码的工具,您将看到发生了什么。

link to your code