python刷题宝_Python面试必刷题系列(3)

刷面试题是一种很好的感知职场需求、发现自身知识缺陷并不断提升自我的过程。本专题通过收集、整理Python真实面试题,给大家讲解面试过程中对Python比较常见的考察点和备考点,希望能够引起读者的足够重视。

1. 已知 list0 = [1,2,3,1,2],请对 list0中的元素去重,但是需要保证原有顺序。

list0 = [1,0,3,7,7,5]format_list = list(set(list0))format_list.sort(key=list0.index)print (format_list)

2. 按照下面列表中的字典key:年龄进行降序排序

d1 = [    {'name':'alice', 'age':38},    {'name':'bob', 'age':18},    {'name':'Carl', 'age':28},]

代码:

sorted(d1,key = lambda x : x["age"], reverse=True)

3. 说说Python3 和 Python2 之间的区别?

import方式:Py3是以绝对路径的方式进行import,Py2则是相对路径方式。

新老式类:Python中的类为多继承方式。Py2中的类有两种:新式类和经典类(区别:新式类继承自object,多继承时属性搜索顺序为广度优先,而经典类不继承object,搜索顺序为深度优先),Py3中都是新式类。

字符编码:

(1) 默认编码方式:Py2是ASCII 码,Py3是Unicode;

(2) 字符串存储方式的不同:

py2:    unicode         v = u"root"    本质上用unicode存储(万国码)    (str/bytes)     v = "root"     本质用字节存储py3:    str             v = "root"     本质上用unicode存储(万国码)    bytes           v = b"root"    本质上用字节存储

print函数

:Py2中print是语句,不需要();Py3中print是函数,必须加()。

除法运算

Py2的除法:

10/3=3:

Py3:

10//3=3 ;

10/3=3.33333335

range

:Py2中,range的结果是list类型,xrange的结果是生成器(更高效) ;Py3中,range结果就是生成器,xrange被废弃。

dict返回迭代结果:

Py3中dict的.keys()、.items() 和.values()方法返回迭代器而不是Py2中的list,Py2中的iterkeys()等函数被废弃。

long数据类型:

Py3去除了long类型,现在只有一种整型——int,但它的行为就像Py2版本的long

键盘输入的区别

Py2:

raw_input( "提示信息" );

Py3:

input( "提示信息" )

库的变化:这个就太多啦~~

其他变化:参考:

https://www.cnblogs.com/feifeifeisir/p/9599218.html

4. 一行代码展开该列表[[1,2],[3,4],[5,6]],得出[1,2,3,4,5,6]

[j for i in a for j in i]

5. 字典操作中 del 和 pop 有什么区别?

pop(key [, default ] ) pop会返回被删除的值,如果没有返回default。

del也是删除key,但是不返回key对应的value。

6. 简述解释型和编译型编程语言

【编译型语言】

把源程序全部编译成二进制代码形式的可直接执行程序。

特点:执行速度快、效率高、占内存少;跨平台性差、程序难于调试。

例子:C、C++

【解释型语言】

不需要预先编译,源程序由解释器解释一句执行一句,直到结束。

特点:执行速度慢、效率低、占内存高(因为运行时需要启动解释器);便于调试、跨平台性好(有相应解释器就行)。

例子:Python、Java、JavaScript

需要注意的是:

java是一类特殊的编程语言,Java程序也需要编译,但是却没有直接编译为机器语言,而是编译为字节码,然后在Java虚拟机上以解释方式执行字节码。

7. 求列表list1和list2中元素的交集,并集和差集

set1, set2 = set(list1), set(list2)print set1&set2, set1|set2, set1-set2, set2-set1

8. 合并两个字典 a 和 b 有哪些方法?

dict(a, **b)dict(a.items() + b.items())c = {}  c.update(a)  c.update(b)

9. Python 解释器种类以及相关特点?

Python程序需要经过解释器解释后才能执行,可以基于不同语言开发解释器,以下五种Python解释器最常见:

CPython:官方解释器,C语言开发,使用最广泛。

IPython:基于CPython的一个交互式解释器,只增强了CPython的交互性,其他不变。

PyPy:采用JIT技术,对Python代码进行动态编译,执行速度显著提升。

Jython:运行在Java平台上的解释器,把Python代码直接编译成Java字节码执行。

IronPython:运行在微软.NET平台上的解释器,把Python代码直接编译成.NET字节码执行。

10. 如何把元组("a","b")和元组(1,2),变为字典{"a":1,"b":2}

dict([(k, v) for k, v in zip(a, b)])

11. 一行代码交换字典d = {"A" : 1,"B" : 2}的键和值?

dict([(v,k) for k,v in d.items()])

12. 请将[i for i in range(3)]改成生成器

(i for i in range(3))

13. 如何区别可变数据类型和不可变数据类型

不可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。比如:int,str,tuple

可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。比如:list,set,dict

总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变

注意:

元组被定义为:只读列表,即数据可以被查询,但不能被修改。当我们修改元组的内容时,发现其内存地址不会变。

14. 如何打乱一个list中的元素?

from random import shufflemylist=[0,1,2,3,4,5,6,7,8]shuffle(mylist)print(mylist)

比心

推荐阅读:

【算法研习社】

机器学习、数据挖掘、推荐系统、架构编程

海量干货,持续发送

大厂内推、技术资料获取,加小编微信,拉你进

【算法研习社 - 交流群】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值