欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python面试总结

程序员文章站 2022-03-07 10:24:01
...

1. 列表和元组的区别

  • 从可变上,列表可变,元组不可变。即可以直接在列表上进行增、删、改,但元组不行,所以从某种程度上元组更安全
  • 从效率上,创建元组要比创建列表块,存储空间要比列表小。当某些变量我们不再使用的时候,系统就会自动回收释放内存,以便其他程序或变量使用。对于长度为1-20的元组而言,即使不再使用,也不会马上释放内存,而是留给以后使用。当需要创建新的元组的时候,就可以直接使用这块内存,而不需要再去向系统申请内存。;由于列表可变,所以需要额外的存储空间,这样才可以实时追踪列表空间的使用情况,当空间不足时,及时分配额外空间。

列表,元组,字典,集合的同异

2. 列表插入的4种方法

  1. a+b
  2. a.append(value)
  3. a.extend(b)
  4. a.insert(n, value)

方法2和方法3都是添加到末尾,方法4是添加到指定位置。

3. 列表删除的三种方法

  1. a.remove(value)——删除指定元素(用for循环删除重复元素时,要用copy)
  2. del a[index]——删除指定索引的元素
  3. 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
相关标签: 2022秋招 python