python面试总结
程序员文章站
2022-03-07 10:24:01
...
1. 列表和元组的区别
- 从可变上,列表可变,元组不可变。即可以直接在列表上进行增、删、改,但元组不行,所以从某种程度上元组更安全
- 从效率上,创建元组要比创建列表块,存储空间要比列表小。当某些变量我们不再使用的时候,系统就会自动回收释放内存,以便其他程序或变量使用。对于长度为1-20的元组而言,即使不再使用,也不会马上释放内存,而是留给以后使用。当需要创建新的元组的时候,就可以直接使用这块内存,而不需要再去向系统申请内存。;由于列表可变,所以需要额外的存储空间,这样才可以实时追踪列表空间的使用情况,当空间不足时,及时分配额外空间。
2. 列表插入的4种方法
a+b
a.append(value)
a.extend(b)
a.insert(n, value)
方法2和方法3都是添加到末尾,方法4是添加到指定位置。
3. 列表删除的三种方法
-
a.remove(value)
——删除指定元素(用for循环删除重复元素时,要用copy) -
del a[index]
——删除指定索引的元素 -
a,pop(index)
——弹出并删除指定索引的元素
4. 深copy和浅copy
import copy
a = [1, 2]
# 浅copy,a变化时,b也会变化
b = copy.copy(a)
#深copy,a变化时,c不会变化
c = copy.deepcopy(b)
5. 用python实现斐波那契数列
- 直接计算(返回第 n n n个值):
def rabbit1(n):
f1=1
f2=1
if (n==1 or n==2):
return 1
else:
for i in range(3,n+1):
f1,f2=f2,f1+f2
return f2
- 直接计算(返回列表):
def rabbit(n):
f1=1
f2=1
results = []
if n == 1:
return [1]
if n == 2:
return [1, 1]
else:
results.append(1)
results.append(1)
for i in range(3,n+1):
f1,f2=f2,f1+f2
results.append(f2)
return results
- 递归方式1(速度慢)
def rabbit2(n):
if (n==1 or n==2):
return 1
else:
return rabbit2(n-1)+rabbit2(n-2)
- 递归方式2(比递归方式1快,但还是比直接计算慢)
def rabbit3(n,rabbits={1:1,2:1}):
if n in rabbits:
return rabbits[n]
res=rabbit3(n-1)+rabbit3(n-2)
rabbits[n]=res
return res
上一篇: 链栈的基本操作
下一篇: github的使用学习记录