题目描述
python解法
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
num_letter_mapping = {'2': 'abc',
'3': 'def',
'4': 'ghi',
'5': 'jkl',
'6': 'mno',
'7': 'pqrs',
'8': 'tuv',
'9': 'wxyz'}
return list(filter(lambda x: True if x else False, [''.join(i) for i in itertools.product(*[num_letter_mapping[digit] for digit in digits])]))
涉及知识点
1. 笛卡尔积:itertools.product
Python中的itertools.product(关键词:itertools/product)
代码示例:
>>> import itertools
>>> itertools.product([1,2,3],[100,200])
<itertools.product object at 0x7f3e6dd7bc80>
>>> for item in itertools.product([1,2,3],[100,200]):
... print item
...
(1, 100)
(1, 200)
(2, 100)
(2, 200)
(3, 100)
(3, 200)
product(list1, list2) 依次取出list1中的每1个元素,与list2中的每1个元素,组成元组,
然后,将所有的元组组成一个列表,返回。
2. 匿名函数Lambda
匿名函数解释和示例
3. 过滤函数
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
4. list前加*星号-列表生成式
举例:
ls2 =[str(i) for i in ls1]
等价
ls2 = []
for i in ls1:
ls2.append(str(i))
手写笔记