Find longest string in a list
我需要编写一个代码,函数接受一个列表,然后返回该列表中最长的字符串。
到目前为止,我有:
1 2 3 4 5 6 7 8 9 10 11 12 | def longestword(alist): a = 0 answer = '' for i in alist: x = i if x > a: a = x answer = x elif i == a: if i not in alist: answer = answer + ' ' + i return answer |
我举的例子是
对于初学者,它总是将
1 2 | for i in alist: x = i |
你应该尽量不要访问循环之外的循环值,因为它也是你循环的最后一个值,所以
1 | elif i == a: |
解决这个问题的关键是找出哪些值是字符串(使用
1 2 3 4 5 6 | def longeststring(lst): longest ="" for x in lst: if isinstance(x, str) and len(x) > len(longest): longest = x return longest |
一定要注意等长的字符串。我不知道你的任务要求。
我喜欢将for循环保持在最小值;下面是我如何在列表中查找最长的字符串:
1 2 3 4 5 6 7 8 | listo = ["long word 1 ", " super OMG long worrdddddddddddddddddddddd","shortword" ] lenList = [] for x in listo: lenList.append(len(x)) length = max(lenList) print("Longest string is: {} at {} characters.".format(listo[lenList.index(length)] , length)) |