1.3 常见问题求解

1、斐波拉契数列

def febo(num):
    list_ = []
    i = 1
    j = 0
    while len(list_) < num:
        list_.append(i)
        i, j = i + j, i
    return list_
class Febo:
    def __init__(self):
        self.i = 1
        self.j = 0
        self.times = 0
    def __iter__(self):
        return self

    def __next__(self):
        self.times += 1
        self.i,self.j = self.i+self.j, self.i
        return self.j

2、浅拷贝和深拷贝

  • 浅拷贝仅仅复制了容器中元素的地址

这里可以看出,未修改前,a和b中元素的地址都是相同的,不可变的hello 。和可变的list地址都一样,说明浅拷贝知识将容器内的元素的地址复制了一份。这可以通过修改后,b中字符串没改变,但是list元素随着a相应改变得到验证。(新瓶装旧酒)

  • 深拷贝,完全拷贝了一个副本,容器内部元素地址都不一样

这里可以看出,深拷贝后,a和b的地址以及a和b中的元素地址均不同,这是完全拷贝的一个副本,修改a后,发现b没有发生任何改变,因为b是一个完全的副本,元素地址与a均不同,a修改不影响b。(新瓶装新酒)

3、列表当队列、栈

4、单例模式

每个类只有一个实例存在

  • 使用模块

  • 使用初始化方法(看不懂,不会无限迭代吗?)

5、全局变量

global 和 globals() 是不同的,global 是关键字用来声明一个局部变量为全局变量。globals() 和 locals() 提供了基于字典的访问全局和局部变量的方式

快速排序

深度遍历、广度遍历

时间复杂度

求解质数

鸭子模式

文件I/O(输入输出)

Last updated

Was this helpful?