1.想创建一个空的列表,我们可以用下面的 A、B 两种方式,请问它们在效率上有什么区别吗?我们应该优先考虑使用哪种呢?可以说说你的理由

# 创建空列表
# option A
empty_list = list()
# option B
empty_list = []

区别主要在于list()是一个function call,Python的function call会创建stack,并且进行一系列参数检查的操作,比较expensive,反观[]是一个内置的C函数,可以直接被调用,因此效率高。

2.字典的键可以是一个列表吗?下面这段代码中,字典的初始化是否正确呢?如果不正确,可以说出你的原因吗?

d = {'name': 'jason', ['education']: ['Tsinghua University', 'Stanford University']}

用列表作为 Key 在这里是不被允许的,因为列表是一个动态变化的数据结构,字典当中的 key 要求是不可变的,原因也很好理解,key 首先是不重复的,如果 Key 是可以变化的话,那么随着 Key 的变化,这里就有可能就会有重复的 Key,那么这就和字典的定义相违背;如果把这里的列表换成之前我们讲过的元组是可以的,因为元组不可变

3.下面初始化字典的方式,哪一种更高效?

'''
'''
# Option A
d = {'name': 'jason', 'age': 20, 'gender': 'male'}
 
# Option B
d = dict({'name': 'jason', 'age': 20, 'gender': 'male'})

第一种方法更快,原因感觉上是和之前一样,就是不需要去调用相关的函数,而且 {} 是关键字,内部会去直接调用底层C写好的代码