给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
python版参考答案:
class Solution: def letterCombinations(self, digits): """ :type digits: str :rtype: List[str] """ digit_letters = {'2':'abc', '3':'def', '4':'ghi', '5':'jkl', '6':'mno', '7':'pqrs', '8':'tuv', '9':'wxyz' } # reduace的第三个参数是计算的初始值 return reduce(lambda acc, digit: [x + y for x in acc for y in digit_letters[digit]], digits, [''])
收获:
学习lambda reduce format map filter 方法
1、map()函数有两个参数,一个是函数,另外一个是列表,map的作用是将函数依次作用到序列的每个元素。
例如:
def f(x): return 2*x print map(f ,[1,2,3,4,5])
输出 [2, 4, 6, 8, 10]
2、reduce()函数有三个参数,第一个参数是函数(函数必须有两个参数),第二个参数是列表,第三个参数是计算的初始值(可省略)。函数的作用是让每次计算的结果作为下一次计算的第一个参数继续计算,和迭代差不多。
例如:
def f(x,y): return x*y print reduce(f ,[1,2,3,4,5])
输出 120
3、filter()函数是过滤函数,也是两个参数,第一个是函数,第二个是列表。作用是将列表中的每个元素通过函数计算,根据函数返回值决定是否保留该元素。
例如过滤出偶数:
def f(x): if x%2 == 0: return True else: return False print filter(f ,[1,2,3,4,5])
输出 [2, 4]
4、lambda() 函数是一个匿名函数
形式: lambda 参数:表达式
例如:
a = lambda x,y:x+y print a(1,2)
输出 3
5、format()函数是一种格式化字符串的函数 str.format()
例如:
print '{}{}{}'.format('我','喜欢','你') print '{2}{1}{0}'.format('我','喜欢','你') print '{2}真的{1}{0}吗?'.format('我','喜欢','你')
输出:
我喜欢你
你喜欢我
你真的喜欢我吗?
这几个函数的综合使用
print filter(lambda x:x%2==0,[1,2,3,4,5])
输出 [2, 4]
print map(lambda x:2*x,[1,2,3,4,5])
输出 [2, 4, 6, 8, 10]
print reduce(lambda a, b: '{}喜欢{}'.format(a, b), ['张三','李四','王五'],'你')
输出 你喜欢张三喜欢李四喜欢王五