面试题
6.zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。 zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。
如需展示列表,需手动 list() 转换。 ''' 现有两个元组,(('a'),('b'),(('c'),('d')) 请把他变成[('a','c'),('b','d')] ''' t1=(('a'),('b')) t2=(('c'),('d')) print(list(zip(t1,t2))) '''
7.静态函数(@staticmethod) : 即静态方法,主要处理与这个类的逻辑关联,它是不可以访问实例变量或类变量的。 类函数(@classmethod): 即类方法, 只能访问类变量,不能访问实例变量 , 类方法通过@classmethod装饰器实现。 成员函数 : 实例的方法, 只能通过实例进行调用,若需通过类名来调用,则应申明为类方法。 属性函数:通过@property把一个方法变成一个静态属性。 具体应用: 日期的方法, 可以通过实例化(__init__)进行数据输出, 传入参数self; 可以通过 类的方法 (@classmethod) 进行数据转换, 传入参数cls; 可以通过 静态方法(@staticmethod)进 行数据验证;
1.Python里的reduce函数有什么用法 from functools import reduce
def fun(x,y):
return 10*x+y
l=reduce(fun,(1,2,3,4))
8.,示例说明args和**kwargs *args(表示的就是将实参中按照位置传参,多余的都是给args,切都是以元组的方式实现) **kwargs:(表示的是按照关键字传参,保存的是字典的形式)
print(type(l),l)
2.请写出一段Python代码实现删除一个list里面的重复元素,例如l=[1,2,3,3,4,4,5]
l=[1,2,3,3,4,4,5] d ={}
d=d.fromkeys(l)
print(list(d))
3.Python里面如何生成随机数? import random l = random.randint(198,200) print(l) l = random.randrange(100) print(l)
4.简述列表,字符串,元组,字典之间异同。 有序性:前三者都是有序的,由于此性质决定了,可以用成员运算符 in or not in,可以索引[],可以切片,拼接,len(),.count(),.index() max(),min() 可变性:列表,字典都是可变的,都可以增删改查
#静态方法举例 class People(object): Name = '类变量名' def __init__(self,name): self.name = name @staticmethod#静态方法,是用来处理这个类的逻辑关系,不能访问类属性和实例属性 def run(self): print('%s is a staticmthod '%self.name) @staticmethod def talk(): print('who is talking') p1 = People('ll') #print(p1.run())#不能输出 print(p1.run(p1))#解决方法:调用时主动传递实例本身给run方法 p1.talk() # 解决方法:在run方法中去掉self参数,但这也意味着,在中不能通过self. #去调用实例中的其他变量了 #类方法举例->只能访问类变量不能访问实例变量 class Cat(object): name = '我是类变量' def __init__(self,name): self.name = name @classmethod def sleep(self): print('%s is a classname'%self.name) c1 = Cat('大猫') c1.sleep() #属性方法举例--->成员函数:实例的方法,只能通过实例来调用,若需通过类名来调用,则应申明为类方法 #属性方法是通过@property把一个方法变成一个静态属性 class Cat(object): def __init__(self,name): self.name =name @property def talf(self): print('%s is a property method'%self.name) c1 = Cat('damao') #c1.talk()调用时出现错误,因为talk此时已经变成一个静态属性了,不是方法,不需要括号 c1.talf #作用根据需要改变属性的状态,比如获取航班的当前状态,到达,延误还是飞走