python 字典取值的时间复杂度_五道常见的Python面试题一定不要答错!

279561131918a44638f529f5da10228b.png

第1题:阅读下面的代码,默读出A0,A1至An的最终值。

3d30bc2df19d9e0d1f2de0452a214e64.png

默读代码类的题目,相对来说是比较简单的。重点去研究列表解析,之后你就可以轻松的回答这些问题啦

5d18daae19e18ff697396c963f416e04.png

第2题:如何提高python的运行效率?
1.数据结构一定要选对 能用字典就不用列表:字典在索引查找和排序方面远远高于列表。
2.多用python中封装好的模块库关键代码使用外部功能包(Cython,pylnlne,pypy,pyrex)
3.使用生成器
4.针对循环的优化 尽量避免在循环中访问变量的属性
5.使用较新的Python版本

第3题: Python字典有什么特点,从字典中取值,时间复杂度是多少?
dict(中文叫字典)是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中 字典的特性

  1. 查找速度快 无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
    不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
  2. 字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。 不允许同一个键出现两次。
  3. 键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行。
    dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样。
    从字典中取值,时间复杂度是多少 O(1),字典是hash table实现

第4题: 多线程、多进程?

  1. 线程
    线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
    一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。一个线程是一个execution context(执行上下文),即一个cpu执行时所需要的一串指令。
  2. 进程
    一个程序的执行实例就是一个进程。每一个进程提供执行程序所需的所有资源。(进程本质上是资源的集合)
    一个进程有一个虚拟的地址空间、可执行的代码、操作系统的接口、安全的上下文(记录启动该进程的用户和权限等等)、唯一的进程ID、环境变量、优先级类、最小和最大的工作空间(内存空间),还要有至少一个线程。
    每一个进程启动时都会最先产生一个线程,即主线程 然后主线程会再创建其他的子线程。进程与线程区别
    1.同一个进程中的线程共享同一内存空间,但是进程之间是独立的。
    2.同一个进程中的所有线程的数据是共享的(进程通讯),进程之间的数据是独立的。
    3.对主线程的修改可能会影响其他线程的行为,但是父进程的修改(除了删除以外)不会影响其他子进程。
    4.线程是一个上下文的执行指令,而进程则是与运算相关的一簇资源。
    5.同一个进程的线程之间可以直接通信,但是进程之间的交流需要借助中间代理来实现。
    6.创建新的线程很容易,但是创建新的进程需要对父进程做一次复制。
    7.一个线程可以操作同一进程的其他线程,但是进程只能操作其子进程。
    8.线程启动速度快,进程启动速度慢(但是两者运行速度没有可比性)。

第5题: 请尽可能列举python列表的成员方法,并给出以下列表操作的答案:

a=[1, 2, 3, 4, 5], a[::2]=?, a[-2:] = ?

bd6a20e014399132e7436f65ea763549.png

一行代码实现对列表a中的偶数位置的元素进行加3后求和?

01f905f9db011afb9acfab97f475ee21.png

将列表a的元素顺序打乱,再对a进行排序得到列表b,然后把a和b按元素顺序构造一个字典d。

cb0ac9394b06a511084832d7e7656986.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值