Python 获取名称列表中最长的名称
例如:Python 获取名称列表中最长的名称,python,python-3.x,Python,Python 3.x,例如: def get_longest_name(a_list): count = 0 for i in a_list: if len(i) > count: count = len(i) word = i return word def main(): print("1.", get_longest_name(["Candide", "Jessie", "Kath", "Amity",
def get_longest_name(a_list):
count = 0
for i in a_list:
if len(i) > count:
count = len(i)
word = i
return word
def main():
print("1.", get_longest_name(["Candide", "Jessie", "Kath", "Amity",
"Raeanne"]))
print("2.", get_longest_name(["Josephine", "Jessie", "Penelope", "Jin",
"Rosamunda", "Annabelle"]))
print("3.", get_longest_name(["Alan", "Jess", "Amity", "Rosalie",
"Raeanne"]))
print("4. ", "***", get_longest_name(["Jo", "Jai", "Jen", "Jing", "Joey",
"Jess"]), "***", sep = "")
print("5. ", "***", get_longest_name([]), "***", sep = "")
print("6.", "***" + get_longest_name([""]) + "***")
main()
输出如下:
1. Candide
2. Josephine
3. Rosalie
4. ***Jing***
我已经得到了三个正确的输出(三个最长的名称)。函数应该返回列表中字符最多的单词(最长的单词),但只考虑具有六个或更多字符的单词。如果列表中两个或多个单词的字符数与最长单词的字符数相同,则函数应返回列表开头字符数最多的第一个单词。如果参数列表为空,或者如果列表中没有包含六个以上字符的单词,则函数应返回空字符串。因此,输出应该是这样的:
1. Candide
2. Josephine
3. Rosalie
4. ******
5. ******
6. ******
您可以将max()
与key=len
一起使用:
def get_longest_name(a_list, min_length=6):
return max((name for name in a_list if len(name) >= min_length), key=len, default='')
生成器表达式处理
A_列表
以仅包括长度>=6的名称。替代@mhawke解决方案:
def get_longest_name(a_list, min_length=6):
longest = max(a_list, key=len) if a_list else ''
return longest if longest and len(longest) >= min_length else ''
到目前为止,您试图解决这些附加问题的方法是什么?顺便说一句,如果
a_列表
为空,或者不包含任何通过if
测试的单词,则该代码将引发NameError
。@Moses:感谢您在Python 3中编辑.FWIW,max
接受一个default
arg,如果传递给它一个空的iterable,它将返回该参数。@PM2Ring:谢谢,我不知道default
参数。包括在我的回答中。