补充:题目尚在补充中
亲身面试过的题目
测试环境:
操作系统: Window 10
工具:Pycharm
Python: 3.7
1. is 和 == 的区别
is 用于判断两个变量引用对象是否为同一个对象(内存地址一致), == 用于判断引用变量间指向的值是否相等,例如id(a)==id(b),id()能够获取对象的内存地址。 如果a=10;b=a; 则此时a 和b 的内存地址一样的,对象一样,b 是 a 的标签,如 a=10,b=10,那么就需要使用 == 判断变量的值是否相等
>>> a = 10
>>> b = a
>>> id(a) == id(b)
True
>>> a is b
True
>>>
2. map()方法/函数的使用
print(list(map(lambda x: x * x, [y for y in range(3)])))
# [0, 1, 4]
# map 方法需要改变某些参数,也就是加工厂(匿名函数),加工原材料(参数),
# 匿名函数获得的参数,由匿名函数自己设置的参数所限制,假设 lambda x,y: x * y,
# 那么就需要传递两个参数给匿名函数,后面的列表推导式就需要注意这一点了
# 列表推导式 [ i for i in 可迭代对象 ] 类似这种的列表 i for i in
3. Python 主要的内置数据类型都有哪些?
内建类型:布尔类型、数字、字符串、列表、元组、字典、集合;
4. 根据要求写列表推导式 (忘了要求,看着办吧)
[ i for i in range(10) ]
5. 列表排除重复的元素
利用python中集合元素惟一性(不可重复性)特点,将列表转为集合,将转为列表返回如:
>>>listA = ['python','语','言','是','一','门','动','态','语','言']
>>> set(listA)
{'门', 'python', '语', '动', '态', '一', '言', '是'}
# 如果需要排序的话
>>> sorted(set(listA))
['python', '一', '动', '态', '是', '言', '语', '门']
# 按原来的下标排序
>>> sorted(set(listA), key = listA.index)
['python', '语', '言', '是', '一', '门', '动', '态']
6. 字典的删除和合并
删除字典的值
>>> a = {"age":1}
>>> del a["age"]
>>> a
{}
删除字典
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>>
字典合并不支持加法运算如 字符串间的加法的 c = a + b
方法1:
d = d1.copy()
d.update(d2) ###### d2会覆盖d1字典重复的键 ######
方法2:列表推导式
可以用字典推导式解决此问题:
>>> d = {k:v for d in [d1, d2] for k,v in d.items()}
7. 一行输出 1-100的和
print sum( range(1, 101))
8. new 和 __init__的区别
__init__方法做的事情是在对象创建好之后初始化变量。真正创建实例的是__new__方法
lambda 的 两个数相乘
print(list(map(lambda x: x * x, [y for y in range(3)])))
# [0, 1, 4]
9. filter() 和 列表推导式的使用
举例:
filter(lambda c: c < 20, [c for c in range(100) if c >= 5]))
以上是 提取 5 ——> 20 范围的数值
filter(lambda c: c < 20, map(lambda x:x+1, [x for x in range(100) if x%2==0 ])))
这里先是使用 map 过滤了非偶数项的值,之后又加工了一下 x ,将偶数项变成了奇数项,也就是 x+1,然后 fliter() 过滤了了大于 20 的 奇数项值,只保留了小于 20 的数值
想要理解 filter 和 map 函数的,请点击这里的链接
10. 正则表达式
理解记忆正则表达式的匹配模式
学习链接:https://www.runoob.com/python/python-reg-expressions.html#flags