今天去面试两家公司,且不说结果如何,谈谈今天发现的知识的漏洞。
2个字典怎么取并集?
emmm当时回答的比较水,没想到别的方法,然后就说了一个极其笨的方法。
for循环balabala。。。
脑子里这么想的。。
dict1 = {'a': 2, 'c': 3}
dict2 = {'a': 3, 'd': 4}
union_dict = {}
for key in dict1:
union_dict[key] = dict1[key]
for key in dict2:
union_dict[key] = dict2[key]
print(union_dict)
# 脑子进水了 手动滑稽
面试后研究一下字典的常用方法:update
字典的更新方法
dict1.update(dict2)
print(dict1)
# 愉快而又简单的结束了
接下来列表的insert
方法的内部原理:
Python中的列表不是由若干个独立的节点相互引用而组成的,而是一整块单一连续的内存区块–我们通常称之为数组。当我们进行insert
操作是就会将插入位置后边的元素进行复制。对于数组而言,每次执行insert操作都需要移动插入点右边所有的元素,甚至在必要时需要把所有数组元素复制到另外一个更大的数组中。
详见
append比insert快的原因
'''
一个无序整数数组,返回最大的三个整数,要求不能数组排序,尽量遍历一遍数组
'''
# 刚开始用的 insert 完后就性能了,就凉凉了,面试官说insert性能低。
import random
nums_list = [random.randint(0, 100000) for i in range(100000)]
new_list = sorted(nums_list[0:3], reverse=True)
for num in nums_list[3:]:
if num > new_list[-1]:
new_list.append(num)
new_list.sort(reverse=True)
new_list.pop(-1)
print(new_list)