Python面试题

补充:题目尚在补充中


测试环境:

操作系统: 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值