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

A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
A1 = range(10)
A2 = [i for i in A1 if i in A0]
A3 = [A0[s] for s in A0]
A4 = [i for i in A1 if i in A3]
A5 = {i:i*i for i in A1}
A6 = [[i,i*i] for i in A1]

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

A0 = {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}
A1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
A2 = []
A3 = [1, 3, 2, 5, 4]
A4 = [1, 2, 3, 4, 5]
A5 = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
A6 = [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]

第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、环境变量、优先级类、最小和最大的工作空间(内存空间),还要有至少一个线程。

    每一个进程启动时都会最先产生一个线程,即主线程 然后主线程会再创建其他的子线程。

进程与线程区别

转载自互联网,总结的挺好的,有益!

深入的理解看这篇博客就可以了:https://www.cnblogs.com/whatisfantasy/p/6440585.html

  1. 同一个进程中的线程共享同一内存空间,但是进程之间是独立的。
  2. 同一个进程中的所有线程的数据是共享的(进程通讯),进程之间的数据是独立的。
  3. 对主线程的修改可能会影响其他线程的行为,但是父进程的修改(除了删除以外)不会影响其他子进程。
  4. 线程是一个上下文的执行指令,而进程则是与运算相关的一簇资源。
  5. 同一个进程的线程之间可以直接通信,但是进程之间的交流需要借助中间代理来实现。
  6. 创建新的线程很容易,但是创建新的进程需要对父进程做一次复制。
  7. 一个线程可以操作同一进程的其他线程,但是进程只能操作其子进程。
  8. 线程启动速度快,进程启动速度慢(但是两者运行速度没有可比性)。

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

  1. a=[1, 2, 3, 4, 5], a[::2]=?, a[-2:] = ?
a[::2] = [1, 3, 5], a[-2:] = [4, 5]
  1. 一行代码实现对列表a中的偶数位置的元素进行加3后求和?
from functools import reduce
a = [1, 2, 3, 4, 5]
print(reduce(lambda x, y: x+y, [(x+3*((a.index(x)+1)%2)) for x in a])) # a中元素均不相同
# 或
print(reduce(lambda x, y: x+y, [a[x]+(x+1)%2*3 for x in range(0, 5)])) # 只适用于a中元素有5个情况
  1. 将列表a的元素顺序打乱,再对a进行排序得到列表b,然后把a和b按元素顺序构造一个字典d。
from random import shuffle
a = [1, 2, 3, 4, 5]
# 打乱列表a的元素顺序
shuffle(a)
# 对a进行排序得到列表b
b = sorted(a, reverse=True)
# zip 并行迭代,将两个序列“压缩”到一起,然后返回一个元组列表,最后,转化为字典类型。
d = dict(zip(a, b))
print(d)

周三面试Python开发,这几道Python面试题差点答错,Python面试题No7的更多相关文章

  1. 《python开发技术详解》|百度网盘免费下载|Python开发入门篇

    <python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby  内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...

  2. 【神经网络与深度学习】【Python开发】Caffe配置 windows下怎么安装protobuf for python

    首先从google上下载protobuf-2.5.0.zip和protoc-2.5.0-win32.zip,然后把protoc-2.5.0-win32.zip里的protoc.exe放到protobu ...

  3. 【Python开发】【神经网络与深度学习】如何利用Python写简单网络爬虫

    平时没事喜欢看看freebuf的文章,今天在看文章的时候,无线网总是时断时续,于是自己心血来潮就动手写了这个网络爬虫,将页面保存下来方便查看   先分析网站内容,红色部分即是网站文章内容div,可以看 ...

  4. Python开发技术详解(视频+源码+文档)

    Python, 是一种面向对象.直译式计算机程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结 ...

  5. Sublime Text配置Python开发利器

    Sublime Text配置Python开发利器 收好了 自动提示 jedi 代码格式化 Python PEP8 autoformat 如果还需要在shell中搞搞研究的话,ipython将是很好的选 ...

  6. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

  7. Python开发简单爬虫 - 慕课网

    课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序   课程目录 第1章 课程介绍 ...

  8. xcode5 python 开发环境

    在xcode5 下配置 python开发环境 1:默认mac下已经集成了python的开发库,先找到集成的python库的目录 终端 which python 记下当前的python 路径 /usr/ ...

  9. python开发vim插件

    [python开发vim插件] 按如下方式使用python开发vim插件,注意调用时使用的是exec. 但在函数中嵌入python代码更为简便,如下: python如何传递参数给python: 代码头 ...

随机推荐

  1. SequoiaDB、SequoiaSQL、Cloudera Manager4.8.0、Cloudera CDH4.5 详细安装教程

    1安装SequoaiDB集群 1.1配置信任关系 以root用户执行下面的操作 1 执行命令 ssh-keygen 然后一直回车确定即可 2 每台机器都打开id_rsa.pub文件 vi ~/.ssh ...

  2. 1-6static关键字

    static的作用? static可以修饰变量,被static修饰的变量叫做静态变量,程序运行时静态变量存放在方法区里面,因此,静态变量在类加载阶段赋值,并且只赋值一次.请看例1 static可以修饰 ...

  3. border 0px和border none的区别

    border:0px这个表示的是边框为0像素,表示边框的像素 border:none 这个表示无边框(边框的绘制方式),边框的绘制方式有很多种:solid dashed等等

  4. 死磕 java并发包之AtomicInteger源码分析

    问题 (1)什么是原子操作? (2)原子操作和数据库的ACID有啥关系? (3)AtomicInteger是怎么实现原子操作的? (4)AtomicInteger是有什么缺点? 简介 AtomicIn ...

  5. hihocoder offer收割编程练习赛8 C 数组分拆

    思路:(引自bfsoyc的回答:http://hihocoder.com/discuss/question/4160) 动态规划.状态dp[i]表示 前i个数的合法的方案数,转移是 dp[i] = s ...

  6. VUE学习——vue的内部指令学习(趁自己没忘,学习记录一下)

    1.v-if&v-else&v-show v-if用来判断是否加载html的DOM,v-if和v-else一般是一起用的. v-show相当于display,DOM已经加载出来了,这个 ...

  7. 【学习笔记】深入理解js原型和闭包(10)——this

    接着上一节讲的话,应该轮到“执行上下文栈”了,但是这里不得不插入一节,把this说一下.因为this很重要,js的面试题如果不出几个与this有关的,那出题者都不合格. 其实,this的取值,分四种情 ...

  8. python中 import 和from ... import 的区别

    先看一个例子: 我自定义的一个moudle,里面有一个方法sayhi,还有一个变量version#!/usr/bin/env python # coding=utf-8 # Filename: mym ...

  9. 字符串逆序-c语言

    给定一个含有n个元素的字符串,实现逆序. 这是个很基础的问题,实现方式也是很常见的c语言思路.虽然简单,但是仍然记录下来. [期望] 比如char str[] = "abcdefg" ...

  10. UVALive 2238 Fixed Partition Memory Management 固定分区内存管理(KM算法,变形)

    题意:目前有一部分可用内存,分为m个大小固定的区域.现有n个程序要执行,每个程序在不同大小的内存中运行所需的时间不同,要使运行完所有程序所耗时最少,问每个程序在哪块区域中从什么时间运行到什么时间,以及 ...