使用python通过递归查找列表的长度

时间:2013-11-22 00:30:09

标签: python recursion

我在这里有一个函数,我希望它计算列表的长度,如1,2,3,4,5 = 5 但该功能仅计算数字1234 = 4 我该怎么办?

def mylen(alist):
        if alist:
               return 1 + mylen(alist[1:])
        return 0        

def main():
       alist=input("Enter a list of number :")
       print(mylen(alist))
main()

fyi我不能使用len

3 个答案:

答案 0 :(得分:3)

我假设您希望mylen('1234')= 1。接受输入并用逗号分隔符分割数字。

def mylen(alist):
        if alist:
               return 1 + mylen(alist[1:])
        return 0        

def main():
       alist=input("Enter a number :")
       print(mylen(alist.split(','))
main()

计算机不需要对语言内置的东西进行如此多的处理。这样可以正常工作:

alist=input("Enter a number :")
print(len(alist.split(','))

答案 1 :(得分:0)

我运行了你的代码,结果似乎是正确的。如果您的输出是9而不是5,那可能是因为逗号也被计算在内。

print(len(alist.split(','))

答案 2 :(得分:0)

在Python 3中:

   alist=input("Enter a list of number :")

alist现在将成为一个字符串。如果输入“1,2,3,4,5”,a list将是字符串"1,2,3,4,5",而不是数字列表[1,2,3,4,5]

字符串是序列类型,就像列表一样,因此您的代码也可以使用字符串,并计算其中元素(字符)的数量。

您可以使用split转换列表中的输入:

   userinput = input("Enter a list of number :")
   alist = userinput.split(",")

(请注意,这仍然是字符串列表,而不是数字,但这与此练习无关。)