Python刻意练习
题目翻译
NAMES = ['arnold schwarzenegger', 'alec baldwin', 'bob belderbos',
'julian sequeira', 'sandra bullock', 'keanu reeves',
'julbob pybites', 'bob belderbos', 'julian sequeira',
'al pacino', 'brad pitt', 'matt damon', 'brad pitt']
- 编写一个函数,将数据去重并改为首字母大写
- 编写一个函数,将数据按surname排序
- 编写一个函数,返回最短的firstname,架设只有一个
- 越简洁越好
代码实现
def dedup_and_title_case_names(names):
"""Should return a list of names, each name appears only once"""
return list(map(lambda x: x.title(), set(names)))
def sort_by_surname_desc(names):
"""Returns names list sorted desc by surname"""
names = dedup_and_title_case_names(names)
return sorted(names, key=lambda n: n.split(' ')[1], reverse = True)
def shortest_first_name(names):
"""Returns the shortest first name (str).
You can assume there is only one shortest name.
"""
names = dedup_and_title_case_names(names)
return sorted(names, key = lambda n: len(n.split(' ')[0]) )[0].split(' ')[0]
思考
# 最后一个函数也可以用 for循环实现
names = [name.split()[0] for name in names]
网友评论