嘿大家我正在尝试定义一个可以返回列表中最长字符串的函数,因为这是我到目前为止所拥有的:
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)
但它不断出现错误,我不确定我做错了什么。有人可以帮忙吗?
答案 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))
你做错了什么?
if x<a
,这应该是x&gt; a,因为我们必须检查现有最长字的长度是否小于当前字的长度。elif
部分不是必需的。如果有2个具有相同长度的单词,则代码将返回第一个最长的单词。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