面试题持续更新中......

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.比较(优先级)逻辑运算符

(1print(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)andor 是相反的
  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
posted @ 2018-01-27 20:19  树叶有花  阅读(136)  评论(0编辑  收藏  举报