1.Python的可变类型和不可变类型?

可变类型:list、dict(列表和字典)

不可变类型:数字、字符串、元组

2.求结果:

v = dict.fromkeys(['k1','k2'],[])
v['k1'].append(666)
print(v) # {'k1': [666], 'k2': [666]}
v['k1'] = 777
print(v) # {'k1': 777, 'k2': [666]}

3.求结果:

你将如何修改 multipliers 的定义来产生期望的结果

答案

以上代码的输出是 [6, 6, 6, 6] (而不是 [0, 2, 4, 6])。

这个的原因是 Python 的闭包的后期绑定导致的 late binding,这意味着在闭包中的变量是在内部函数被调用的时候被查找。所以结果是,当任何 multipliers() 返回的函数被调用,在那时,i 的值是在它被调用时的周围作用域中查找,到那时,无论哪个返回的函数被调用,for 循环都已经完成了,i 最后的值是 3,因此,每个返回的函数 multiplies 的值都是 3。因此一个等于 2 的值被传递进以上代码,它们将返回一个值 6 (比如: 3 x 2)。

(顺便说下,正如在 The Hitchhiker’s Guide to Python 中指出的,这里有一点普遍的误解,是关于 lambda 表达式的一些东西。一个 lambda 表达式创建的函数不是特殊的,和使用一个普通的 def 创建的函数展示的表现是一样的。)

这里有两种方法解决这个问题。

最普遍的解决方案是创建一个闭包,通过使用默认参数立即绑定它的参数。例如:

def multipliers():
return [lambda x, i=i : i * x for i in range(4)]

4.filter、map、reduce的作用?

L1 = list(filter(lambda x:x%2==1,range(20)))
print(L1)
L2 = list(map(lambda x:x%2==1,range(20)))
print(L2)
L4 = list(map(lambda x:x*x,range(20)))
print(L4)
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
[False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361

 如果用filter的话,说明匿名函数lambda给出的是个筛选条件,从1到19中筛选出奇数来,但这里如果用map的话,就好像变成了它判断对错的条件,只打印true和false。

 map一般的用法如下,参数有一个函数一个序列,将右边的序列经过左边的函数变换,生成新的序列。

在python3中已将其从全局空间移除,现被放置在functools的模块里,用之前需要引入  from functools import reduce

5、一行代码实现9*9乘法表

print ("\n".join("\t".join(["%s*%s=%s" %(x,y,x*y) for y in range(1, x+1)]) for x in range(1, 10)))

6、re的match和search区别?

match与search函数的功能一样,match匹配字符串开始的第一个位置,search是在字符串全局匹配第一个符合规则的。

import re
str = "this is a str"
a = re.match('th',str)
b = re.search("is",str)
print(a) # <_sre.SRE_Match object; span=(0, 2), match='th'>
print(b) # <_sre.SRE_Match object; span=(2, 4), match='is'>

7、什么是正则的贪婪匹配?

尽可能多的去匹配符合规则的字符,非贪婪模式后面加?(尽可能少的匹配)

8、求结果:


  a. [ i % 2 for i in range(10) ]
 b. ( i % 2 for i in range(10) )

a = [i for i in range(10)]
print(a) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = (i for i in range(10))
print(b) # <generator object <genexpr> at 0x0212D180>

9、求结果:


  a. 1 or 2
   b. 1 and 2
   c. 1 < (2==2)
   d. 1 < 2 == 2

print(1 or 2)   # 1
print(1 and 2) # 2
print(1 < (2==2)) # False
print(1<2==2) # True

10、def func(a,b=[]) 这种写法有什么坑?

def funx(a,b=[]):
print(a,b)
b=[1,2]
funx(2,b) # 2 [1, 2]
b.append([3,4])
funx(3,b) # 3 [1, 2, [3, 4]] 每次调用 funx 函数,b 并不是空

11、如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ?

a = ['1','2','3']
b = []
for i in a:
b.append(int(i))
print(b)

12、比较: a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?

print(type([1,2,3][0]))     # <class 'int'>
print(type([(1),(2),(3)][0])) # <class 'int'>
print(type([(1,),(2,),(3,)][0])) # <class 'tuple'>

13、如何用一行代码生成[1,4,9,16,25,36,49,64,81,100] ?

print(list(map(lambda x: x*x ,range(1,11))))
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

14、如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ?

str = '1,2,3'
a = []
for num in str.split(','):
a.append(int(num))
print(a)

15、一行代码实现删除列表中重复的值 ?

print(list(set([1,1,1,2,2,3,4,4,5])))
# [1, 2, 3, 4, 5]

16、如何在函数中设置一个全局变量 ?

def funx():
global a
a += 1
print(a) a = 2
funx() # 3 funx 可以访问函数外的全局变量 a

17、请用代码简答实现stack 。

class Stack(object):
def __init__(self):
self.stack = [] def push(self,value): # 进栈
self.stack.append(value) def pop(self):  # 出栈
if self.stack:
return self.stack.pop()
else:
raise LookupError('stack is empty!') def is_empty(self): # 返回栈 是否为空
return bool(self.stack) def top(self): # 返回栈中最新元素
if self.stack:
return self.stack[-1]
else:
return 'stack is empty!'

18、常用字符串格式化哪几种?

'''
Python 中格式化有三种:
'''
# 需一个个的格式化
print('Hello %s' % ('Petrolero'))
# 不需要一个个的格式化,可以利用字典的方式,缩短时间
print('Hello %(name)s' % {'name':'petrolero'})
# 可读性强
print('Hello {name}'.format(name='petrolero'))

 

Python面试题(练习一)的更多相关文章

  1. Python面试题 —— 获取列表中位数

    中位数是一个可将数值集合划分为相等的上下两部分的一个数值.如果列表数据的个数是奇数,则列表中间那个数据就是列表数据的中位数:如果列表数据的个数是偶数,则列表中间那2个数据的算术平均值就是列表数据的中位 ...

  2. python公司面试题集锦 python面试题大全

    问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...

  3. 【Python】【面试必看】Python笔试题

    前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出 2 个笔试题,这些题目一般不难,主要考察基本功.要是给你一台电脑,在编辑器里面边写边调试,没 ...

  4. Python面试题整理-更新中

    几个链接: 编程零基础应当如何开始学习 Python ? - 路人甲的回答 网易云课堂上有哪些值得推荐的 Python 教程? - 路人甲的回答 怎么用最短时间高效而踏实地学习 Python? - 路 ...

  5. python 面试题4

    Python面试题 基础篇 分类: Python2014-08-08 13:15 2071人阅读 评论(0) 收藏 举报 最近,整理了一些python常见的面试题目,语言是一种工具,但是多角度的了解工 ...

  6. 一道Python面试题

    无意间,看到这么一道Python面试题:以下代码将输出什么? def testFun():    temp = [lambda x : i*x for i in range(4)]    return ...

  7. 很全的 Python 面试题

    很全的 Python 面试题 Python语言特性 1 Python的函数参数传递 看两个例子:           Python   1 2 3 4 5 a = 1 def fun(a):      ...

  8. SQL + Python 面试题:之二(难度:中等)

    SQL + Python 面试题:之二(难度:中等)

  9. Python面试题之一:解密

    Python面试题之一: 说明:就是Python工程师面试题 一.字典转换与正则提取值 1:key与Value交换 a = {'a':1,'b':2} print({value:key for key ...

  10. 震惊!几道Python 理论面试题,Python面试题No18

    本面试题题库,由公号:非本科程序员 整理发布 第1题: 简述解释型和编译型编程语言? 解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候 ...

随机推荐

  1. GitHub 开启 Two-factor authentication,如何在命令行下更新和上传代码

    最近在使用GitHub管理代码,在git命令行管理代码时候遇到一些问题. 如果开起了二次验证(Two-factor authentication两个要素认证),命令行会一直提示输入用户名和密码.查找了 ...

  2. SaaS 系统架构设计经验总结

    2B SaaS系统最近几年都很火.很多创业公司都在尝试创建企业级别的应用 cRM, HR,销售, Desk SaaS系统.很多SaaS创业公司也拿了大额风投.毕竟SaaS相对传统软件的优势非常明显. ...

  3. 打印机 Microsoft Print to PDF 所需的驱动程序 Microsoft Print To PDF 未知。登录之前,请与管理员联系,安装驱动程序。

    这个问题发生后,我觉得很疑惑,因为服务器上确定没有安装打印机.那么打印机是从哪里来的呢? 通过百度搜索,发现网上的一个帖子解答了我的疑惑.原帖地址:http://blog.chinaunix.net/ ...

  4. Cocos2d-x——导入Cocostudio资源

    (搬运自我在SegmentFault的博客) 目前正在和实训的小组成员一起做一款手机2D游戏,我们采用了Cocos2d-x进行开发.之前虽然早有耳闻,这次却是第一次认真地学习和使用Cocos2d-x. ...

  5. php有哪些优化技巧

    1. echo 比 print 快.2. 使用echo的多重参数代替字符串连接.3. 在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替.4. 对global变 ...

  6. HTML5中的SSE(服务器推送技术)

    本文原链接:https://cloud.tencent.com/developer/article/1194063 SSE技术详解:一种全新的HTML5服务器推送事件技术 前言 概述 基本介绍 与We ...

  7. [转]C++中sizeof(struct)怎么计算?

    版权属于原作者,我只是排版. 1. sizeof应用在结构上的情况 请看下面的结构: struct MyStruct{ double dda1; char dda; int type;}; 对结构My ...

  8. 2018.2.27 JavaScript数组方法应用

    JavaScript数组方法应用 1.找出元素item在给定数组arr中的位置 function indexOf(arr,item){ return arr.indexOf(item); } func ...

  9. 学习jQuery的免费资源:电子书、视频、教程和博客

    jQuery毫无疑问是目前最流行的JavasScript库.排名最前的网站中70%使用了jQuery,并且jQuery也成为了Web开发的标准.如果你想找Web开发方面的工作,了解jQuery会大大的 ...

  10. 如何将字符串@“ abc123.xyz789”倒置

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...