面试题持续更新中......
1.列表的删除
li = [1,2,3] del li[1:5] 超过列表长度 自动删除到最后 print(li)
2. 对应位置进行赋值
a, b = 1, 2 print(a,b) 问题:a = 1 b = 3 一行代码,让a,b值互换 a = 1 b = 3 a,b = b,a
3.比较(优先级)逻辑运算符
(1) print(2 > 1 and 3 > 4) print(2 > 1 or 3 > 4) print(not 2 > 1) (2)前后都是数字: x or y if x 为 True ,则值是x else:值是Y print(1 or 2) print(2 or 3) print(0 or 2) print(0 or 3) (3)and 和 or 是相反的 print(1 or 2 and 4 or 5) print(1 or 3 and 4 or 5 ) print(2 > 1 or 1 and 3 < 2)
4.小数据池
python int str 小数据池 int -5-----256 str 如果是全部由字母组成的字符串,都是指向一个内存地址 如果是数字与str(单个字母)相乘,则20(含)以内的都是同一个内存地址 其他数据类型,则没有小数据池概念
5.判断数据类型
(1)判断数据类型 tuple tu = (1) tu1 = (1,) print(tu,type(tu)) print(tu1,type(tu1)) (2)判断数据类型 tu = ("alex") tu1 = ("alex",) print(tu,type(tu)) #alex <class 'str'> print(tu1,type(tu1)) #('alex',) <class 'tuple'> (3)判断数据类型 tu = ([1,2,3]) tu1 = ([1,2,3],) print(tu,type(tu)) #[1, 2, 3] <class 'list'> print(tu1,type(tu1)) #([1, 2, 3],) <class 'tuple'> (4)判断数据类型 tu = ({"name" : "xue","age" : 18}) tu1 = ({"name" : "xue","age" : 18},) print(tu,type(tu)) #{'name': 'xue', 'age': 18} <class 'dict'> print(tu1,type(tu1)) #({'name': 'xue', 'age': 18},) <class 'tuple'>
6. 陷阱参数
def func(name,l = []): l.append(name) return l print(func("alex")) #['alex'] print(func("wusir")) #多次调用函数,保存了上次的值 #['alex', 'wusir']
7.生成器函数 send
1.send 和 next 功能一样
2.给上一个 yiled 整体 发送一个值
3.获取第一个值的时候,不能用send,只能用next
def gener(): print("aaa") yield 222 print("bbb") count = yield 333 print("----->",count) yield "aaa" yield 333 g = gener() print(g.__next__()) print(g.send(None)) print(g.send("AAAA"))
8.金融公司面试题
有一个类,对应这个类产生了100个对象
每个对象有三个属性 : 姓名 年龄 性别
请对这一百个对象进行去重,如果姓名和性别相同,即便年龄不同也是相同的对象
问最简便的方法?
class Person: def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def __hash__(self): return hash('%s %s'%(self.name,self.sex)) def __eq__(self, other): if self.name == other.name and self.sex == other.sex: return True p_lst = [] for i in range(100): p_lst.append(Person('egon',i,'male')) print(set(p_lst))
报错不可hash 完成了__hash__
hash是否相等 __hash__
值是否相等 __eq__
收获1
对于一些python当中已经存在的内置函数 内置数据类型 内置模块中的方法
都有可能依赖于类中的内置方法
收获2
set方法依赖集合中元素对象的__hash__ __eq__
9.匿名函数lamda
d = lambda x:x*2 t = lambda x:x*3 x = 2 x = d(x) #4 x = t(x) #12 x = d(x) #24 print(x) #24