尝试使函数返回最长的字符串

时间:2016-06-04 02:31:47

标签: python string

嘿大家我正在尝试定义一个可以返回列表中最长字符串的函数,因为这是我到目前为止所拥有的:

record = ['60', 'Edward St', 'NSW','4019']
def length(lists):
    a = 0 
    answer = ''
    for item in lists:
        x = len(item) 
    if x < a:
        a = x
        answer = item
    elif x == a:
        if item not in record:
    return answer
print length(record)

但它不断出现错误,我不确定我做错了什么。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:6)

max()将从迭代中找到最大值,您可以为它提供一个函数来告诉它如何比较它们。在这里,告诉它按长度比较项目。

record = ['60', 'Edward St', 'NSW', '4019']

print(max(record, key=lambda s: len(s)))

答案 1 :(得分:1)

您可以按照以下方式执行此操作。

record = ['60', 'Edward St', 'NSW','4019']
def length(lists):
    a = 0 
    answer = ""
    for item in lists:
        x = len(item) 
        if x > a:
            a = x
            answer = item
    return answer
print (length(record))

你做错了什么?

  1. if x<a,这应该是x&gt; a,因为我们必须检查现有最长字的长度是否小于当前字的长度。
  2. elif部分不是必需的。如果有2个具有相同长度的单词,则代码将返回第一个最长的单词。
  3. Otherthan,你是对的。

    修改

    修复了使用python 3.x

    的问题

答案 2 :(得分:0)

你可以简单地做到这一点

record = ['60', 'Edward St', 'NSW','4019']
def length(lists):
    a = 0
    ans = -1
    answer = ''
    for ind, item in enumerate(lists):
        x = len(item)
        if x>a:
            a = x
            ans=ind
    return lists[a]
print length(record)

答案 3 :(得分:0)

这应该有效。

def length(lists):
    a = 0 
    answer = ''
    for item in lists:
        x = len(item) 
        if x > a:
            a = x
            answer = item
    return answer