坑!Python 列表注意append和+的区别
1、list与字符串相加:
list+=“abc” 结果是list==['a','b','c']
而如果用append的话,就是 list.append("abc"),结果是["abc"]
2、list与list相加:
list+list的结果是直接拼接
list.append()的结果是将参数作为一个整体加到list中:
!!注意append() sort() reverse()都是直接作用在变量上,没有返回值
>>> list=[[1,2,3],[4,5,6]]
>>> a=list+[7,8,9]
>>> a
[[1, 2, 3], [4, 5, 6], 7, 8, 9]
>>> list.append([7,8,9])
>>> list
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这道题昨天花了一个小时递归总写错,今天中午花了不到10分钟就写出来了,无语!!还是得清醒的时候刷题。
使用的方法是递归
1、结束条件:当数字字符串为0的时候,返回并将结果添加到列表中
2、递归公式:new_s=old_s+digits[0]
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
res=[]
dict_p={"2":"abc","3":"def","4":"ghi","5":"jkl","6":"mno","7":"pqrs","8":"tuv","9":"wxyz"}
def find_n(new_di,res,pre_w):
if len(new_di)==0:
res.append(pre_w)
return ''
for i in dict_p[new_di[0]]:
find_n(new_di[1:],res,str(pre_w+i))
if len(digits)==0:
return res
find_n(digits,res,"")
return res