Python经典面试题

合集下载

Python经典面试题

Python经典面试题

1:Python如何实现单例模式?Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式:1.class Singleton(type):def __init__(cls, name, bases, dict):super(Singleton, cls).__init__(name, bases, dict)cls.instance = Nonedef __call__(cls, *args, **kw):if cls.instance is None:cls.instance = super(Singleton, cls).__call__(*args, **kw)return cls.instanceclass MyClass(object):__metaclass__ = Singletonprint MyClass()print MyClass()2. 使用decorator来实现单例模式def singleton(cls):instances = {}def getinstance():if cls not in instances:instances[cls] = cls()return instances[cls]return getinstance@singletonclass MyClass:…2:什么是lambda函数?Python允许你定义一种单行的小函数。

定义lambda函数的形式如下:labmda 参数:表达式lambda函数默认返回表达式的值。

你也可以将其赋值给一个变量。

lambda函数可以接受任意个参数,包括可选参数,但是表达式只有一个:>>> g = lambda x, y: x*y>>> g(3,4)12>>> g = lambda x, y=0, z=0: x+y+z>>> g(1)1>>> g(3, 4, 7)14也能够直接使用lambda函数,不把它赋值给变量:>>> (lambda x,y=0,z=0:x+y+z)(3,5,6)14如果你的函数非常简单,只有一个表达式,不包含命令,可以考虑lambda函数。

15个Python面试问题(附答案)

15个Python面试问题(附答案)

15个Python⾯试问题(附答案)问题1到底什么是Python?你可以在回答中与其他技术进⾏对⽐(也⿎励这样做)。

答案下⾯是⼀些关键点:Python是⼀种解释型语⾔。

这就是说,与C语⾔和C的衍⽣语⾔不同,Python代码在运⾏之前不需要编译。

其他解释型语⾔还包括PHP和Ruby。

Python是动态类型语⾔,指的是你在声明变量时,不需要说明变量的类型。

你可以直接编写类似x=111和x="I'm a string"这样的代码,程序不会报错。

Python⾮常适合⾯向对象的编程(OOP),因为它⽀持通过组合(composition)与继承(inheritance)的⽅式定义类(class)。

Python中没有访问说明符(access specifier,类似C++中的public和private),这么设计的依据是“⼤家都是成年⼈了”。

在Python语⾔中,函数是第⼀类对象(first-class objects)。

这指的是它们可以被指定给变量,函数既能返回函数类型,也可以接受函数作为输⼊。

类(class)也是第⼀类对象。

Python代码编写快,但是运⾏速度⽐编译语⾔通常要慢。

好在Python允许加⼊基于C语⾔编写的扩展,因此我们能够优化代码,消除瓶颈,这点通常是可以实现的。

numpy就是⼀个很好地例⼦,它的运⾏速度真的⾮常快,因为很多算术运算其实并不是通过Python实现的。

Python⽤途⾮常⼴泛——⽹络应⽤,⾃动化,科学建模,⼤数据应⽤,等等。

它也常被⽤作“胶⽔语⾔”,帮助其他语⾔和组件改善运⾏状况。

Python让困难的事情变得容易,因此程序员可以专注于算法和数据结构的设计,⽽不⽤处理底层的细节。

为什么提这个问题:如果你应聘的是⼀个Python开发岗位,你就应该知道这是门什么样的语⾔,以及它为什么这么酷。

以及它哪⾥不好。

问题2补充缺失的代码def print_directory_contents(sPath):"""这个函数接受⽂件夹的名称作为输⼊参数,返回该⽂件夹中⽂件的路径,以及其包含⽂件夹中⽂件的路径。

精心整理110道Python面试题(附答案)

精心整理110道Python面试题(附答案)

精⼼整理110道Python⾯试题(附答案)整理了⼀些Python⾯试题和⾯试简历,如果需要,可以参考学习扫描下⽅公众号回复:⾯试,即可获取⾯试题答案程序员资源社区具体⾯试题如下:1、⼀⾏代码实现1--100之和2、如何在⼀个函数内部修改全局变量3、列出5个python标准库4、字典如何删除键和合并两个字典5、谈下python的GIL6、python实现列表去重的⽅法7、fun(*args,**kwargs)中的*args,**kwargs什么意思?8、python2和python3的range(100)的区别8、python2和python3的range(100)的区别9、⼀句话解释什么样的语⾔能够⽤装饰器?10、python内建数据类型有哪些11、简述⾯向对象中__new__和__init__区别12、简述with⽅法打开处理⽂件帮我我们做了什么?13、列表[1,2,3,4,5],请使⽤map()函数输出[1,4,9,16,25],并使⽤列表推导式提取出⼤于10的数,最终输出[16,25]14、python中⽣成随机整数、随机⼩数、0--1之间⼩数⽅法15、避免转义给字符串加哪个字母表⽰原始字符串?16、<div class='nam'>中国</div>,⽤正则匹配出标签⾥⾯的内容(“中国”),其中class的类名是不确定的17、python中断⾔⽅法举例18、数据表student有id,name,score,city字段,其中name中的名字可有重复,需要消除重复⾏,请写sql语句19、10个Linux常⽤命令20、python2和python3区别?列举5个21、列出python中可变数据类型和不可变数据类型,并简述原理22、s = 'ajldjlajfdljfddd',去重并从⼩到⼤排序输出'adfjl'23、⽤lambda函数实现两个数相乘24、字典根据键从⼩到⼤排序25、利⽤collections库的Counter⽅法统计字符串每个单词出现的次数'kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h'26、字符串a = 'not 404 found 张三 99 深圳',每个词中间是空格,⽤正则过滤掉英⽂和数字,最终输出'张三深圳'27、filter⽅法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]28、列表推导式求列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]29、正则plie作⽤30、a=(1,)b=(1),c=('1') 分别是什么类型的数据?31、两个列表[1,5,7,9]和[2,2,6,8]合并为[1,2,2,3,6,7,8,9]32、⽤python删除⽂件和⽤linux命令删除⽂件⽅法33、log⽇志中,我们需要⽤时间戳记录error,warning等的发⽣时间,请⽤datetime模块打印当前时间戳 “2018-04-01 11:38:54”34、数据库优化查询⽅法35、请列出你会的任意⼀种统计图(条形图、折线图等)绘制的开源库,第三⽅也⾏36、写⼀段⾃定义异常代码37、正则表达式匹配中,(.*)和(.*?)匹配区别?38、简述Django的orm39、[[1,2],[3,4],[5,6]]⼀⾏代码展开该列表,得出[1,2,3,4,5,6]40、x='abc',y='def',z=['d','e','f'],分别求出x.join(y)和x.join(z)返回的结果41、举例说明异常模块中try except else finally的相关意义42、python中交换两个数值43、举例说明zip()函数⽤法44、a='张明 98分',⽤re.sub,将98替换为10045、写5条常⽤sql语句46、a='hello'和b='你好'编码成bytes类型47、[1,2,3]+[4,5,6]的结果是多少?48、提⾼python运⾏效率的⽅法49、简述mysql和redis区别50、遇到bug如何处理51、正则匹配,匹配⽇期2018-03-2052、list=[2,3,5,4,9,6],从⼩到⼤排序,不许⽤sort,输出[2,3,4,5,6,9]53、写⼀个单列模式54、保留两位⼩数55、求三个⽅法打印结果56、列出常见的状态码和意义57、分别从前端、后端、数据库阐述web项⽬的性能优化58、使⽤pop和del删除字典中的'name'字段,dic={'name':'zs','age':18}59、列出常见MYSQL数据存储引擎60、计算代码运⾏结果,zip函数历史⽂章已经说了,得出[('a',1),('b',2),('c',3),('d',4),('e',5)]61、简述同源策略62、简述cookie和session的区别63、简述多线程、多进程64、简述any()和all()⽅法65、IOError、AttributeError、ImportError、IndentationError、IndexError、KeyError、SyntaxError、NameError分别代表什么异常66、python中copy和deepcopy区别67、列出⼏种魔法⽅法并简要介绍⽤途68、C:\Users\ry-wu.junya\Desktop>python 1.py 22 33命令⾏启动程序并传参,print(sys.argv)会输出什么数据?69、请将[i for i in range(3)]改成⽣成器70、a = ' hehheh ',去除收尾空格71、举例sort和sorted对列表排序,list=[0,-1,3,-10,5,9]72、对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],使⽤lambda函数从⼩到⼤排序73、使⽤lambda函数对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],输出结果为[0,2,4,8,8,9,-2,-4,-4,-5,-20],正数从⼩到⼤,负数从⼤到⼩(传两个条件,x<0和abs(x))74、列表嵌套字典的排序,分别根据年龄和姓名排序75、列表嵌套元组,分别按字母和数字排序76、列表嵌套列表排序,年龄数字相同怎么办?77、根据键对字典排序(⽅法⼀,zip函数)78、根据键对字典排序(⽅法⼆,不⽤zip)79、列表推导式、字典推导式、⽣成器80、最后出⼀道检验题⽬,根据字符串长度排序,看排序是否灵活运⽤81、举例说明SQL注⼊和解决办法82、s='info:xiaoZhang 33 shandong',⽤正则切分字符串输出['info', 'xiaoZhang', '33','shandong']83、正则匹配以结尾的邮箱84、递归求和85、python字典和json字符串相互转化⽅法86、MyISAM 与 InnoDB 区别:87、统计字符串中某字符出现次数88、字符串转化⼤⼩写89、⽤两种⽅法去空格90、正则匹配不是以4和7结尾的⼿机号91、简述python引⽤计数机制92、int('1.4'),int(1.4)输出结果?93、列举3条以上PEP8编码规范94、正则表达式匹配第⼀个URL95、正则匹配中⽂96、简述乐观锁和悲观锁97、r、r+、rb、rb+⽂件打开模式区别98、Linux命令重定向 > 和 >>99、正则表达式匹配出<html><h1></h1></html>100、python传参数是传值还是传址?101、求两个列表的交集、差集、并集102、⽣成0-100的随机数103、lambda匿名函数好处104、常见的⽹络传输协议105、单引号、双引号、三引号⽤法106、python垃圾回收机制107、HTTP请求中get和post区别108、python中读取Excel⽂件的⽅法109、简述多线程、多进程110、python正则中search和match。

python经典面试题

python经典面试题

python经典面试题Python是一种高级的、面向对象的编程语言,被广泛应用于软件开发、数据分析和人工智能等领域。

在Python的学习和应用过程中,掌握一些经典面试题是非常重要的。

下面将介绍一些常见的Python面试题,帮助大家更好地准备面试。

1. 请解释Python中的“GIL”是什么?答:GIL全称为全局解释器锁(Global Interpreter Lock),它是一种机制,用于在Python解释器中确保同一时间只能有一个线程执行Python字节码。

这是因为CPython解释器中存在一些共享的全局数据,如果没有GIL的限制,多个线程同时访问这些数据可能会导致数据不一致性的问题。

2. 请解释Python中的列表(List)和元组(Tuple)的区别。

答:列表和元组都是Python中的序列类型,但有几个重要的区别。

列表是可变的(Mutable),可以通过索引修改其中的元素;而元组是不可变的(Immutable),一旦创建就不能被修改。

另外,列表使用方括号[]表示,元组使用圆括号()表示。

3. 如何在Python中实现字符串的反转?答:可以使用切片操作来实现字符串的反转。

例如,通过s[::-1]就可以将字符串s逆序输出。

4. 请解释Python中的装饰器是什么?如何使用装饰器?答:装饰器是Python中的一种函数或类,用于包装其他函数或类,以提供额外的功能。

它可以在不修改原函数或类的情况下,扩展其功能或改变其行为。

装饰器使用语法糖@来应用,将装饰器作用于函数或类上。

5. 请解释Python中的迭代器和生成器的概念,并说明它们之间的区别。

答:迭代器是一种对象,它可以通过for循环逐个地返回元素。

它使用__iter__()和__next__()方法来实现迭代。

生成器是一种特殊的迭代器,它可以通过yield关键字来定义,简化了迭代器的编写过程。

区别在于迭代器需要显式地实现__iter__()和__next__()方法,而生成器则可以使用yield关键字来自动生成这些方法。

常见的35个Python面试题及答案

常见的35个Python面试题及答案

常见的35个Python⾯试题及答案1. Python ⾯试问题及答案作为⼀个 Python 新⼿,你必须熟悉基础知识。

在本⽂中我们将讨论⼀些 Python ⾯试的基础问题和⾼级问题以及答案,以帮助你完成⾯试。

包括Python 开发问题、编程问题、数据结构问题、和 Python 脚本问题。

让我们来深⼊研究这些问题Python ⾯试问题Q.1. Python 的特点和优点是什么?Python 可以作为编程的⼊门语⾔,因为他具备以下特质:1. 解释性2. 动态特性3. ⾯向对象4. 语法简洁5. 开源6. 丰富的社区资源Q.2. 深拷贝和浅拷贝的区别是什么?深拷贝是将对象本⾝复制给另⼀个对象。

这意味着如果对对象的副本进⾏更改时不会影响原对象。

在 Python 中,我们使⽤ deepcopy()函数进⾏深拷贝,使⽤⽅法如下:深拷贝-Python ⾯试问题及答案浅拷贝是将对象的引⽤复制给另⼀个对象。

因此,如果我们在副本中进⾏更改,则会影响原对象。

使⽤ copy()函数进⾏浅拷贝,使⽤⽅法如下:浅拷贝—Python ⾯试问题及答案Q.3. 列表和元祖有什么不同?主要区别在于列表是可变的,元祖是不可变的。

看下⾯的例⼦:会出现以下错误提⽰:TypeError: ‘tuple’ object does not support item assignment2. Python ⾯试基础题Q.4 到 Q.20 是新⼿经常会被问到的⼀些 Python 基础题,有经验的⼈也可以参考这些问题来复习这些概念。

Q.4. 解释 Python 中的三元表达式与 C++不同, 在 Python 中我们不需要使⽤ ? 符号,⽽是使⽤如下语法:[on true] if [expression]else [on false]如果 [expression] 为真, 则 [on true] 部分被执⾏。

如果表⽰为假则 [on false] 部分被执⾏下⾯是例⼦:2HiQ.5. Python 中如何实现多线程?线程是轻量级的进程,多线程允许⼀次执⾏多个线程。

python面试题目

python面试题目

python面试题目Python是一种高级的、解释型的、面向对象的编程语言,广泛应用于数据分析、机器学习、人工智能等领域。

对于求职者来说,掌握Python的相关知识和技能是非常重要的。

在Python面试中,面试官会提出一系列的问题来考察面试者的能力和经验。

本文将介绍一些常见的Python面试题目,以及它们的答案。

1. 请解释一下Python中的列表(list)和元组(tuple)有什么区别?答:列表和元组都是Python中的数据容器,但它们有以下几个区别:- 列表是可变的,可以通过索引和切片来修改和操作,而元组是不可变的,一旦创建就不能修改和删除其中的元素。

- 列表使用方括号([])来表示,元素之间使用逗号(,)分隔,而元组使用圆括号(())来表示,元素之间使用逗号(,)分隔。

- 列表通常用于存储同类型的数据,而元组通常用于存储异构的数据。

- 列表的内存空间较大,元组的内存空间较小,因此在存储大量数据时,使用元组可以提高程序的性能。

2. 如何在Python中实现对字符串的反转?答:可以使用切片操作来实现字符串的反转,示例代码如下:```pythonstring = "Hello, World!"reversed_string = string[::-1]print(reversed_string)```3. 请解释一下Python中的装饰器(decorator)是什么?如何使用装饰器?答:装饰器是一种Python语法糖,用于在不修改源代码的情况下,在函数执行前后添加额外的功能。

装饰器实际上是一个函数,它接受一个函数作为参数,并返回一个新的函数,同时在新函数中添加了额外的功能。

使用装饰器的步骤如下:1. 定义装饰器函数,函数中接受一个函数作为参数,并返回一个新的函数。

2. 在需要使用装饰器的函数上方添加@装饰器函数的名称。

示例代码如下:```pythondef decorator(func):def wrapper():print("Before function execution")func()print("After function execution")return wrapper@decoratordef say_hello():print("Hello, World!")say_hello()```4. 如何在Python中处理异常?答:在Python中,可以使用try-except语句来捕获和处理异常。

最常见的35个Python面试题及答案

最常见的35个Python面试题及答案

最常见的-35-个-Python-面试题及答案1. Python中的列表和元组有什么区别?答:列表是可变的,可以修改其元素;而元组是不可变的,不能修改其元素。

2. 什么是Python中的切片操作?答:切片操作是指通过指定起始索引和结束索引来获取列表、元组或字符串中的一部分内容。

3. 如何在Python中反转一个字符串?答:可以使用切片操作[:-1]来反转一个字符串。

4. 如何将一个字符串转换为整数?答:可以使用int函数将一个字符串转换为整数。

5. Python中的字典是什么?答:字典是一种无序的数据集合,用于存储键-值对。

6. 如何遍历一个字典?答:可以使用for循环遍历一个字典的键或值,或者使用items方法同时遍历键和值。

7. 如何在Python中打开一个文件并读取其内容?答:可以使用open函数打开一个文件,并使用read方法读取其内容。

8. 如何在Python中写入文本到一个文件?答:可以使用open函数打开一个文件,并使用write方法写入文本内容。

9. Python中的异常处理机制是什么?答:异常处理机制是一种用于捕获和处理程序中可能出现的错误的机制,可以使用try-except语句来实现。

10. 如何在Python中自定义一个异常?答:可以通过继承Exception类来自定义一个异常。

11. 什么是模块和包?答:模块是一个包含Python代码的文件,而包是一个包含多个模块的文件夹。

12. 如何在Python中导入一个模块或包?答:可以使用import语句导入一个模块或包。

13. 如何在Python中定义一个函数?答:可以使用def关键字来定义一个函数。

14. 什么是lambda函数?答:lambda函数是一种匿名函数,可以在一行代码中定义函数。

15. 如何在Python中对列表进行排序?答:可以使用sort方法对列表进行原地排序,或者使用sorted函数创建一个新的排序后的列表。

python面试题目及答案

python面试题目及答案

python面试题目及答案1. 介绍Python的特点及其优缺点Python是一种高级、通用、解释型的编程语言,具有以下特点: - 简单易学:Python语法简洁清晰,易于上手学习。

- 开源免费:Python使用者可以免费获取到源代码并进行修改和发布。

- 跨平台:Python可以在各种操作系统上运行,包括Windows、MacOS、Linux等。

- 面向对象:Python支持面向对象编程的方法,提供了类、继承、多态等特性。

- 强大的标准库:Python拥有丰富的标准库和第三方库,可用于各种开发需求。

- 动态性:Python是一种动态语言,变量无需声明类型,可随时修改和使用。

Python的优点包括语法简洁清晰、生态系统丰富、开发效率高等;缺点则包括性能较低、全局解释器锁(GIL)对多线程性能有一定影响等。

2. 什么是Python中的GIL?GIL(Global Interpreter Lock,全局解释器锁)是Python解释器中的一个机制,用于保护Python解释器内部的数据结构,以防止多线程并发访问时出现不一致的情况。

由于GIL的存在,同一时刻只能有一个线程在解释器中执行字节码指令,这限制了Python在多核CPU上的并行性能。

因此,对于CPU 密集型的任务,Python多线程并不能真正实现并行加速,但对于I/O密集型任务,多线程可以提高执行效率。

最新版本的Python中引入了全局解释器锁的替代方案,即GIL的改进,以提升多线程性能。

3. Python中如何实现多线程?在Python中实现多线程的主要方式有两种:使用threading模块和使用concurrent.futures模块。

- 使用threading模块:```pythonimport threadingdef task():# 线程执行的任务逻辑# 创建线程t = threading.Thread(target=task)# 启动线程t.start()# 等待线程执行完毕t.join()```- 使用concurrent.futures模块(适用于Python3版本):```pythonfrom concurrent.futures import ThreadPoolExecutordef task():# 线程执行的任务逻辑# 创建线程池executor = ThreadPoolExecutor(max_workers=5)# 提交任务给线程池future = executor.submit(task)# 获取任务结果result = future.result()```4. 解释一下Python中的装饰器是什么,如何使用?装饰器是Python中的一种语法糖,通过在不修改被装饰函数源代码的情况下,为函数添加额外的功能或者修改其行为。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1:Python如何实现单例模式?Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式:1/用类class Singleton(type):def __init__(cls, name, bases, dict):super(Singleton, cls).__init__(name, bases, dict)cls.instance = Nonedef __call__(cls, *args, **kw):if cls.instance is None:cls.instance = super(Singleton, cls).__call__(*args, **kw) return cls.instanceclass MyClass(object):__metaclass__ = Singletonprint(MyClass())2/使用decorator来实现单例模式def singleton(cls):instance = {}def getinstance():if cls not in instances:instances[cls] = cls()return instances[cls]return getinstance()@singletonclass MyClass:pass2:什么是lambda函数?Python允许你定义一种单行的小函数。

定义lambda函数的形式如下:labmda 参数:表达式lambda函数默认返回表达式的值。

你也可以将其赋值给一个变量。

lambda函数可以接受任意个参数,包括可选参数,但是表达式只有一个:>>> g = lambda x, y: x * y>>> g(3, 4)12>>> g = lambda x, y=0, z=0: x + y + z>>> g(1)1>>> g(3, 4, 7)14也能够直接使用lambda函数,不把它赋值给变量:print((lambda x, y=0, z=0: x + y + z)(3, 5, 6))14如果你的函数非常简单,只有一个表达式,不包含命令,可以考虑lambda函数。

否则,你还是定义函数才对,毕竟函数没有这么多限制。

3:Python是如何进行类型转换的?Python提供了将变量或值从一种类型转换成另一种类型的内置函数。

int函数能够将符合数学格式数字型字符串转换成整数。

否则,返回错误信息。

>>> int(“34”)34>>> int(”1234ab”) #不能转换成整数ValueError: invalid literal for int(): 1234ab函数int也能够把浮点数转换成整数,但浮点数的小数部分被截去。

>>> int(34.1234)34>>> int(-2.46)-2函数float将整数和字符串转换成浮点数:>>> float(”12ʺ)12.0>>> float(”1.111111ʺ)1.111111函数str将数字转换成字符:>>> str(98)‘98ʹ>>> str(”76.765ʺ)‘76.765ʹ整数1和浮点数1.0在python中是不同的。

虽然它们的值相等的,但却属于不同的类型。

这两个数在计算机的存储形式也是不一样。

4:Python如何定义一个函数函数的定义形式如下:def <name>(arg1, arg2,… argN):<statements>函数的名字也必须以字母开头,可以包括下划线“ ”,但不能把Python的关键字定义成函数的名字。

函数内的语句数量是任意的,每个语句至少有一个空格的缩进,以表示此语句属于这个函数的。

缩进结束的地方,函数自然结束。

下面定义了一个两个数相加的函数:>>> def add(p1, p2):print p1, “+”, p2, “=”, p1+p2>>> add(1, 2)1 +2 = 3函数的目的是把一些复杂的操作隐藏,来简化程序的结构,使其容易阅读。

函数在调用前,必须先定义。

也可以在一个函数内部定义函数,内部函数只有在外部函数调用时才能够被执行。

程序调用函数时,转到函数内部执行函数内部的语句,函数执行完毕后,返回到它离开程序的地方,执行程序的下一条语句。

5:Python是如何进行内存管理的?Python的内存管理是由Python得解释器负责的,开发人员可以从内存管理事务中解放出来,致力于应用程序的开发,这样就使得开发的程序错误更少,程序更健壮,开发周期更短6:如何反序的迭代一个序列?how do I iterate over a sequence in reverse order如果是一个list, 最快的解决方案是:list.reverse()try:
for x in list:passfinally:list.reverse()如果不是list, 最通用但是稍慢的解决方案是:for i in range(len(sequence) - 1, -1, -1):x = sequence[i]
# <do something with x>7:Python里面如何实现tuple和list的转换?函数tuple(seq)可以把所有可迭代的(iterable)序列转换成一个tuple, 元素不变,排序也不变。

例如,tuple([1,2,3])返回(1,2,3), tuple(’abc’)返回(’a’.’b',’c').如果参数已经是一个tuple的话,函数不做任何拷贝而直接返回原来的对象,所以在不确定对象是不是tuple的时候来调用tuple()函数也不是很耗费的。

函数list(seq)可以把所有的序列和可迭代的对象转换成一个list,元素不变,排序也不变。

例如 list([1,2,3])返回(1,2,3), list(’abc’)返回['a', 'b', 'c']。

如果参数是一个list, 她会像set[:]一样做一个拷贝8:Python面试题:请写出一段Python代码实现删除一个list里面的重复元素可以先把list重新排序,然后从list的最后开始扫描,代码如下:List = [1, 2, 1, 2, 1, 13, 3, 3, 4, 4, 2, 6, 7, 8, 8, 9]if List:List.sort()last = List[-1]print(last, List)for i in range(len(List) - 2, -1, -1):# 从倒数第二个开始迭代,排除掉lastif last == List[i]:del List[i]else:last = List[i]print(List)9:Python文件操作的面试题1. 如何用Python删除一个文件?使用os.remove(filename)或者os.unlink(filename);2. Python如何copy一个文件?shutil模块有一个copyfile函数可以实现文件拷贝10:Python里面如何生成随机数?标准库random实现了一个随机数生成器,实例代码如下:import randomrandom_number = random.random()print(random_number)它会返回一个随机的0和1之间的浮点数11: 如何用Python来发送邮件?可以使用smtplib标准库。

以下代码可以在支持SMTP监听器的服务器上执行。

import sys, smtplibfromaddr = raw_input("From: ")
toaddrs = raw_input("To: ").split(',')
print("Enter message, end with ^D:")while True:
line = sys.stdin.readline()
if not line:breakmsg = msg + line# 发送邮件部分
server = smtplib.SMTP('localhost')server.sendmail(fromaddr, toaddrs, msg)
server.quit()12:Python里面如何拷贝一个对象?一般来说可以使用copy.copy()方法或者copy.deepcopy()方法,几乎所有的对象都可以被拷贝一些对象可以更容易的拷贝,Dictionaries有一个copy方法:newdict = olddict.copy()13:有没有一个工具可以帮助查找python的bug和进行静态的代码分析?有,PyChecker是一个Python代码的静态分析工具,它可以帮助查找python代码的bug, 会对代码的复杂度和格式提出警告Pylint是另外一个工具可以进行coding standard检查。

14:如何在一个function里面设置一个全局的变量?解决方法是在function的开始插入一个global声明:def f():global x14:有两个序列a, b,大小都为n,序列元素的值任意整形数,无序;要求:通过交换a, b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。

1. 将两序列合并为一个序列,并排序,为序列Source2. 拿出最大元素Big,次大的元素Small3. 在余下的序列S[:-2]进行平分,得到序列max,min4. 将Small加到max序列,将Big加大min序列,重新计算新序列和,和大的为max,小的为min。

def mean(sorted_list):if not sorted_list:return (([], []))big = sorted_list[-1]small = sorted_list[-2]big_list, small_list = mean(sorted_list[:-2])big_list.append(small)small_list.append(big)big_list_sum = sum(big_list)small_list_sum = sum(small_list)if big_list_sum > small_list_sum:return ((big_list, small_list))else:return ((small_list, big_list))tests = [[1, 2, 3, 4, 5, 6, 700, 800],[10001, 10000, 100, 90, 50, 1],range(1, 11),[12312, 12311, 232, 210, 30, 29, 3, 2, 1, 1]]for l in tests:l.sort()print "Source List:\t", ll1, l2 = mean(l)print "Result List:\t", l1, l2print "Distance:\t", abs(sum(l1) - sum(l2))15:用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别?当重复匹配一个正则表达式时候,例如<.*>, 当程序执行匹配的时候,会返回最大的匹配值例如:import res = "<html><head><title>Title</title>"print(re.match("<.*>", s).group())会返回一个匹配<html><head><title>Title</title>而不是<html>而import res = "<html><head><title>Title</title>"print(re.match("<.*?>", s).group()) # <html><.*>这种匹配称作贪心匹配 <.*?>称作非贪心匹配16:Python里面search()和match()的区别?match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none例如:print(re.match('super', 'superstition').span())会返回(0, 5)而print(re.match('super', 'insuperable'))则返回Nonesearch()会扫描整个字符串并返回第一个成功的匹配例如:print(re.search('super', 'superstition').span())返回(0, 5)print(re.search('super', 'insuperable').span())返回(2, 7)17:如何用Python来进行查询和替换一个文本字符串?可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement, string[, count=0])replacement是被替换成的文本string是需要被替换的文本count是一个可选参数,指最大被替换的数量例子:import rep = pile('(blue|white|red)')print(p.sub('colour', 'blue socks and red shoes'))print(p.sub('colour', 'blue socks and red shoes', count=1))输出:colour socks and colour shoescolour socks and red shoessubn()方法执行的效果跟sub()一样,不过它会返回一个二维数组,包括替换后的新的字符串和总共替换的数量例如:import rep = pile('(blue|white|red)')print(p.subn('colour', 'blue socks and red shoes'))print(p.subn('colour', 'blue socks and red shoes', count=1))输出(’colour socks and colour shoes’, 2)(’colour socks and red shoes’, 1)18:介绍一下except的用法和作用?Python的except用来捕获所有异常,因为Python里面的每次错误都会抛出一个异常,所以每个程序的错误都被当作一个运行时错误。

相关文档
最新文档