如何在列表中找到一个元素的长度?

8

我刚开始学习编程。我有一个字符串列表,现在需要打印出最长的那个。 所以我首先想要打印出每个元素的长度。我试过像这样的代码:

l = ("xxxxxxxxx", "yyyy","zz")

for i in range(len(l)):

那么我该怎么做呢?

6
实际上,这是一个元组。 - Douglas Leeder
1
-1:这个代码片段现在甚至无法工作。语法是错误的。请修复代码片段,使其至少能够运行。 - S.Lott
1
你正在使用哪个教程学习Python? - S.Lott
8个回答

27
l = ("xxxxxxxxx", "yyyy","zz")
print(max(l, key=len))

首先,你没有一个列表,而是一个元组。这段代码适用于任何序列,不过,列表和元组都是序列(字符串、集合等也是)。因此,max函数需要一个key参数,用于对可迭代对象的元素进行排序。因此,在l的所有元素中,将选择具有最大长度的元素。


但它不会给出一个具有相同最大长度的字符串出现次数2。 - Faisal

9
打印元素的长度:
elements = ["xxxxxx", "yyy", "z"]
for element in elements:
    print len(element)

我建议您阅读一些教程材料,例如 http://docs.python.org/tutorial/

3
题目要求打印最长的字符串。 - user59634
3
@Amit:该问题陈述为“因此我首先只想打印元素的长度”。 - Greg Hewgill

5

如果您想测量序列(列表、元组等)中所有元素的长度,并将这些长度返回到另一个序列(列表、元组等)中,请按照以下步骤操作:

简述:

list_of_lengths = (lambda x:[len(i) for i in x])(lst)

更详细的解释(从括号内向外移动)

  1. 我们通过循环遍历列表,并使用Python中内置的len()函数获取每个元素对应的长度值。
[len(i) for i in x]
  1. 创建一个临时函数,用于包装前面步骤中的循环操作,以便将任何列表放入该函数中并返回其元素长度。
(lambda x:[len(i) for i in x])
  • 通过将列表放在函数定义的括号内作为参数,调用该函数。
  • (lambda x:[len(i) for i in x])(lst)
    
    1. 将新创建的列表分配给变量,以便您可以将其用于其他操作(例如查找最大/最小元素或其索引,如在此页面上提出的问题中所见)。
    list_of_lengths = (lambda x:[len(i) for i in x])(lst)
    

    4
    >>> sorted(['longest','long','longer'],key=len)[-1]
    'longest'
    

    更新:SilentGhost的解决方案更好。


    3

    根据长度找出最大值

    print max(["qsf","qsqsdqsd","qs"], key = len)


    0
    以下代码将打印集合中最大的字符串:
    l = ["abcdev", "xx","abcedeerer"]
    len_0 = len(l[0])
    pos = 0
    
    for i in range(0,len(l)):
            if len(l[i]) > len_0:
                    pos = i
    print l[pos]
    

    为什么是-1?我已经回答了“现在我需要打印最长的一个”。。 - user59634
    虽然我相信你的解决方案是可行的,但它并不是编写 Python 代码的良好示例。对于寻求有关 Python 的帮助的人来说,这并没有什么帮助。 - mthurlin
    我可能在那里写了C语言。你建议使用更多的Python结构,比如'max...key'吗? - user59634

    0
    这段代码将“len”函数映射到列表上,以获取另一个包含每个项长度的列表。
    mylist = ("xxxxxxxxx", "yyyy","zz")
    len_mylist = map(len, mylist)
    max_position = len_mylist.index(max(len_mylist))
    my_item = mylist[max_position]
    print('The largest item of my list is: ' + my_item)
    print('located at position: ' + str(max_position))
    

    0
    首先,要找到字符串的长度,您可以定义函数并使用以下映射函数:
    def len_words(l:list):
        len_list = list(map(len,l))
        return len_list
    

    接下来,您可以调用max函数在len_words上,以找到列表中字符串的最大值。

    max(len_words(l))
    

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接