如何在不使用len()的情况下在python中查找列表的长度

2024-05-02 21:19:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个函数,它可以根据用户输入找出列表的长度。我不想使用内置函数len()。请帮帮我。我写的函数是为字符串工作的,但对于列表它是失败的。

#function for finding out the length
def string_length(a):
    for i in a:
        j+=1
    return j

#taking user input
a = input("enter string :")
length = string_length(a)
print("length is ", length)

Tags: the函数字符串用户列表forinputstring
2条回答

很简单:

def string_length(string):
    return sum(1 for char in string)

1 for char in string是为字符串中的每个字符生成1generator expression。我们将生成器传递给sum(),后者将它们全部相加。你所拥有的问题是,在添加到它之前,你没有定义j。您需要在循环之前放置j = 0。还有一种方法不如我上面说的好:

from functools import reduce # reduce() is built-in in Python 2.

def string_length(string):
    return reduce(lambda x,y: x+1, string, 0)

它之所以工作是因为reduce()首先使用初始参数0和字符串中的第一个字符调用lambda函数。lambda函数返回其第一个参数0加1。reduce()然后用结果1和字符串中的下一个字符再次调用该函数。它继续这样,直到它传递了字符串中的每个字符。结果:字符串的长度。

您可能需要初始化变量j(在重命名的counter下):

def string_length(my_string):
    """returns the length of a string
    """
    counter = 0
    for char in my_string:
        counter += 1
    return counter

# taking user input
string_input = input("enter string :")
length = string_length(string_input)

print("length is ", length)

这也可以用生成器表达式在一行“pythonic”中完成,zondo指出:

def string_length(my_string):
    """returns the length of a string
    """
    return sum(1 for _ in my_string)

相关问题 更多 >