【Part1 数据结构】
Q1. tuple和list的异同?
相同点:二者都是序列类型的容器对象,可以存放不同类型的数据,支持切片、迭代等操作。
不同点:
1)元组不可变,列表可变(支持insert/pop/sort/reverse/remove/append等)。同样大小的数据,元组初始化和迭代的速度更快,占用的空间更少;
2)元组可作为字典的key,而列表不能;
3)元组可用于存储异构数据,比如一个人的姓名、年龄、身高,而列表多用于存储同构数据。
Q2. 常用的数据结构及应用场景(list, tuple, dic, set)?
(1)list [ ]:列表,可变。内存占用小,速度慢。
(2)tuple ( ):元组,不可变。
(3)dict {a:b}:字典,key-value对,内存占用大,速度快。其中key是不可变对象,故list不能作为dict的key。
(4)set {}:集合(与数学上的集合同义),元素具有唯一性。
Q3. list是怎样实现的?
可参考:
https://blog.csdn.net/siyue0211/article/details/80560783
https://www.cnblogs.com/Vito2008/p/5141546.html
Q4. list有哪几种添加元素的方法,能否从表头插入元素?
list.insert(idx,a) #在idx位置插入a
list.append(a) #在idx位置加入a
list1.extend(list2) #合并list1与list2
Q5. 如何获取list中最后一个元素?
list[len(list)-1]
list[-1]
list.pop() #此操作会将该元素从list中删除
【Part2 效率优化】
Q1. 如何提高Python的运行效率?
可参考:
https://www.cnblogs.com/zhizhan/p/4883806.html
【Part3 运行结果】
Q1. a = [1, 2, 3, 4], b = a, b[0] = 100, print(a)的结果是什么?
直接赋值是对原对象的引用,此处a和b指向同一个对象,b[0]=100修改了原对象,故结果为[100,2,3,4]