面试题需要注意的坑
Posted pythonz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题需要注意的坑相关的知识,希望对你有一定的参考价值。
# 坑1fromkeys: # fromkeys():生成新字典 语法dict.fromkeys() # d = {} # d.fromkeys(["jay", "JJ"], ["周杰伦", "林俊杰"]) # y = d.fromkeys(["jay", "JJ"], ["周杰伦", "林俊杰"]) # print(d) # 输出结果 {} 因为fromkeys会生成新列表对原列表无影响 # print(y) # ({‘jay‘: None, ‘JJ‘: None}, [‘周杰伦‘, ‘林俊杰‘]) 生成新字典 # d = dict.fromkeys(["jay", "JJ"], ["周杰伦", "林俊杰"]) # d.get("jay").append("杨千嬅") # print(d) # {‘jay‘: [‘周杰伦‘, ‘林俊杰‘, ‘杨千嬅‘], ‘JJ‘: [‘周杰伦‘, ‘林俊杰‘, ‘杨千嬅‘]} # 因为jay 和 jj对应的value是同一个列表,当列表发生改变自然都会改变 # 代码中只是更改了jay那个列表. 但是由于jay和JJ?的是同?个列表. 所以. 前?那个改了. 后 # ?那个也会跟着改 # 坑2 # 函数是以代码的形式存储,用起来的时候在赋值运算 # 在获取数据的时候,注意n到底是几 def add(a, b): return a + b def test(): for r_i in range(4): yield r_i g = test() for n in [2, 10]: g = (add(n, i) for i in g) print(list(g)) # print(list(g)) 相当于 g = (add(n, i) for i in add(n, i) for i in test()) # 结果[20, 21, 22, 23] # 坑3 # def extendList(val, list=[]): # list.append(val) # return list # list1 = extendList(10) # [10,a] # list2 = extendList(123, []) # [1,2,3] # list3 = extendList(‘a‘) # [10, a] # # print(‘list1=%s‘ % list1) # print(‘list2=%s‘ % list2) # print(‘list3=%s‘ % list3) # 结果 # list1=[10, ‘a‘] # list2=[123] # list3=[10, ‘a‘] # 此题关键在于list = [],[]为默认值参数当没有传入元素时都是公用同一个list = [] # 此空列表的内存地址是相同的所以当后面的list3在list = []加入一个a时list1结果也跟着改变
以上是关于面试题需要注意的坑的主要内容,如果未能解决你的问题,请参考以下文章