python []中的元素是什么

时间:2018-07-27 04:15:03

标签: python list

我最近研究了python递归函数,发现当递归使用[]中的element时,递归停止。所以我做了一个简单的测试功能,发现甚至没有打印出来。那么我如何理解[]中的元素?为什么在引用[]中的元素时函数会停止?

b=1
def simple():
    for i in []:
        print('i am here')
        return i+b
a = simple()

3 个答案:

答案 0 :(得分:1)

Python的in关键字有两个用途。

作为for循环的一部分,作为for element in iterable循环的一部分。这会在每次通过循环主体时将iterableelement中的每个值赋值。这就是示例函数使用in的方式(尽管由于您要循环的列表为空,所以循环从不执行任何操作)。

您可以使用in的另一种方式是作为运算符。像x in y这样的表达式测试元素x是否存在于容器y中。 (还有in运算符的否定版本not in。表达式x not in y等同于not (x in y)。)我怀疑这是您的递归代码正在做的事情。这对于处理空列表文字也没有用(因为按定义,空列表不包含任何内容),但是我猜测真正的递归函数会更复杂。

作为in两种用法的示例,这是一个生成器函数,该函数使用一组从其他可迭代项中滤除重复项。它具有一个for的{​​{1}}循环,并且还使用in(从技术上讲in)作为运算符来测试输入迭代器的下一个值是否为not in中包含的内容:

seen

答案 1 :(得分:0)

一个递归函数调用自身n次,然后在最后一个递归中返回一个终止值,该值从递归堆栈中退出。

示例: 计算数字的阶乘:

def fact(n):
    # ex: 5 * 4 * 3 * 2 * 1
    # n == 0 is your terminating recursion
    if n == 0:
        return 1
    # else is your recursion call to fact(n-1)
    else:
        return n * fact(n-1)

在您的示例中,函数内没有对simple()的递归调用,在空列表[]中也没有任何元素可以逐步执行,因此您的for循环从未执行

答案 2 :(得分:0)

它关注“ for循环”的机制。

表面上,您要遍历的迭代器(在您的示例中为“ []”)的长度为0,因此不会执行循环主体(包括“ print”等)。 / p>

希望有帮助。