本帖最后由 天圆突破 于 2018-3-17 14:58 编辑
- from functools import reduce
- def func(string):
- aeiou = set(filter(lambda x: x if x in ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] else False, string))
- if len(aeiou) != 2:
- return None
- else:
- a, b = aeiou
- return reduce(lambda x,y:x+y, map(lambda x: (a if x == b else b) if x in aeiou else x,list(string)))
复制代码
- if __name__ == '__main__':
- print(func('apple'))
- print(func('machin'))
- print(func('abca'))
- print(func('abicod'))
复制代码
强行一行:
- from functools import reduce
- func = lambda y:None if len(set(filter(lambda x: x if x in ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] else False, y))) != 2 else reduce(lambda x,y:x+y, map(lambda x: (list(set(filter(lambda x: x if x in ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] else False, y)))[0] if x == list(set(filter(lambda x: x if x in ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] else False, y)))[1] else list(set(filter(lambda x: x if x in ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] else False, y)))[1]) if x in list(set(filter(lambda x: x if x in ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] else False, y))) else x,list(y)))
复制代码 |